类别:浏览器 / 日期:2023-02-02 / 浏览:290 / 评论:0

因为 js 是单线程运行的,在代码执行时,通过将不同函数的执行上 下文压入执行栈中来保证代码的有序执行。在执行同步代码时,如果 遇到异步事件,js 引擎并不会一直等待其返回结果,而是会将这个 事件挂起,继续执行执行栈中的其他任务。当异步事件执行完毕后, 再将异步事件对应的回调加入到一个任务队列中等待执行。任务队列 可以分为宏任务队列和微任务队列,当当前执行栈中的事件执行完毕 后,js 引擎首先会判断微任务队列中是否有任务可以执行,如果有 就将微任务队首的事件压入栈中执行。当微任务队列中的任务都执行 完成后再去执行宏任务队列中的任务。

image.png

Event Loop 执行顺序如下所示:

首先执行同步代码,这属于宏任务

当执行完所有同步代码后,执行栈为空,查询是否有异步代码需要执 行

执行所有微任务

当执行完所有微任务后,如有必要会渲染页面

然后开始下一轮 Event Loop,执行宏任务中的异步代码

版权声明 : 本文未使用任何知识共享协议授权,您可以任何形式自由转载或使用。

 可能感兴趣的文章

评论区

发表评论 / 取消回复

必填

选填

选填

◎欢迎讨论,请在这里发表您的看法及观点。

«    2023年11月    »
12345
6789101112
13141516171819
20212223242526
27282930

最新留言