本文摘自PHP中文网,作者hzc,侵删。
javascript 阻塞程序运行javascript的线程问题
JavaScript 是单线程的,一段 Js 程序的运行会占满整个程序进程,我们通常会想方设法的通过异步编程来减少程序的阻塞,但在某些特殊的场景下我们需要阻塞程序的运行,那么今天就反其道而行之,看看通过怎么样正常的方式来阻塞 Js 运行。
方法一 :无限循环
单线程的 JavaScript 可以给我们灵感,只要程序不断的计算就可以阻塞程序的进程:
1 2 3 4 5 6 7 8 9 10 11 12 |
|
但是这种方式其实是通过无限占用计算机的资源来造成假死状态,它会消耗大量的 CPU,并没有真正的让程序进程停止,这种方式不可取。
方法二 : setTimeout
我们直接用 setTimeout 回调的方式来阻断程序的进程,当然它的确是没有让程序继续进行并且让 CPU 空闲下来,但是这种写法并不是一种同步编程的方式:
1 2 3 4 5 6 7 8 |
|
ES 的高级版本出现了 Promise、await 等异步编程,它们让程序的写法更佳的优雅简介,同样也要借助于 setTimeout 来解决,建议采用此方式:
1 2 3 4 5 6 7 8 9 10 11 |
|
方法三 : generator & yield
ES6 的迭代器同样也具备异步编程能力,但是这种写法相当晦涩难懂,建议少用:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
总结
相关阅读 >>
javascript中的generator函数的用法介绍(附代码)
node.js 15正式版发布,将替代node.js 14成为当前的的稳定发行版
更多相关阅读请进入《javascript》频道 >>

Vue.js 设计与实现 基于Vue.js 3 深入解析Vue.js 设计细节
本书对 Vue.js 3 技术细节的分析非常可靠,对于需要深入理解 Vue.js 3 的用户会有很大的帮助。——尤雨溪,Vue.js作者