js -- even-loop 理解

Posted Mir.zhao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js -- even-loop 理解相关的知识,希望对你有一定的参考价值。

javascript 是一个单线程的脚本

 js 在事件循环中分为同步任务和异步任务

同步任务:直接执行

异步任务:同步任务之后执行

 

js 在事件循环流程:

1>js中含有一个主线程,以及一个调用栈(也叫执行栈)

2>所有的同步任务都在调用栈中,调用栈都在主线程上执行

3>主线程之外还有要一个“任务队列”,只要异步任务有了结果,相关事件就会存放其中

4>一但主线程的 同步任务/调用栈 执行完毕,就会立即调用任务队列异步任务,放入主线程上执行

5>主线程循环 2-4流程

 

在js中,除了同步任务和异步任务,从另外一个角度来看,也分为宏任务(MacroTask),和微任务(MicroTask)。

MacroTask 并不等于是同步任务, 其中:setTimeoutsetIntervalI/OUI Rendering 等都是宏任务

MicroTask 包括:Process.nextTickPromise.then catch finally(注意不是 Promise)、MutationObserver,记住这几个其余都是宏任务

以上是关于js -- even-loop 理解的主要内容,如果未能解决你的问题,请参考以下文章

Atom编辑器折腾记_(15)JS代码片段补全(插件:javascript-snippets)

几个关于js数组方法reduce的经典片段

JS最佳实践

谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js

VSCode自定义代码片段——JS中的面向对象编程

金蝶handler中 collection 代码片段理解