Event Loop事件循环

发布时间:2022-07-01 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Event Loop事件循环脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

js事件循环

1、js主线程事件处理脚本

当js执行一个脚本时,会先从上到下解析脚本内的代码,如果这个任务是一个同步任务,js引擎会将任务放入执行栈中就地执行,如果这个任务是一个异步任务,js引擎会将这个任务挂起并放入js运行环境去执行,继续向下寻找同步任务。

2、js运行环境处理异步任务

js运行环境会接收脚本传输过来的异步任务并执行,执行完毕后会将事件返回的结果分为两种放入任务队列中,这两种任务就是宏任务与微任务,js运行环境会将它们分别放入宏任务队列与微任务队列中等待js主线程执行。

3、js主线程解析任务队列

当所有同步任务执行完毕后,js将在任务队列中的代码放入执行栈执行,js会优先读取微任务队列中的任务,当微任务队列执行完毕后,js才会读取宏任务队列中的任务。如果在这个宏任务中还有微任务,主线程会将这个任务放入微任务队列中等待执行,当宏任务执行完毕后,主线程会先查询微任务队列中是否还有微任务需要执行,如果有就先执行微任务,开始循环。

小结F1a;如果宏任务队列与微任务队列同时存在任务将会优先执行微任务

Event Loop事件循环

 同步任务:

异步任务:

  • setTimeout、setInterval 定时器 
  • XMLHttPRequest   
  • async function

微任务:

  • process.nextTick
  • Promise.then catch finally
  • new Promise

脚本宝典总结

以上是脚本宝典为你收集整理的Event Loop事件循环全部内容,希望文章能够帮你解决Event Loop事件循环所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。