首页 > Web开发 > 详细

js event loop

时间:2020-06-21 21:30:45      阅读:63      评论:0      收藏:0      [点我收藏+]

事件循环机制

因为js是单线程的,同一时间内只能做一件事,所有的任务都是需要排队的,那么就需要定一个规则,任务怎么排序.

还有一个点子就是,因为有些任务类似I/O比较耗时,会出现页面假死,为了解决这个问题,js设计者就把所有的任务分为同步任务和异步任务,异步任务用分为宏任务和微任务.

1.所有的任务进入执行栈中,然后将区分任务哪些是同步任务哪些是异步任务,同步任务就直接进入主线程中,异步任务进入event table,并注册回调函数

2.进入主线程中任务执行完毕之后,js引擎就按照先后顺序执行任务.

3.异步任务执行完毕之后,就将回调函数放到事件队列中

4.主线程中的任务执行完毕之后,js引擎就去事件队列检查有没有任务可以执行,如果有就先取微任务到主线程中执行微任务.

5.执行完所有的微任务,js引擎就查看是否有宏任务,如果有宏任务,也把宏任务放到主线程中执行,

6.反复执行上述操作,就叫做事件循环.

常见的宏任务和微任务

宏任务:setTimeout,setInterval,requestAnimationFrame,I/o,

微任务:process.nextTick, promise.then catch

 

js event loop

原文:https://www.cnblogs.com/wyq20190622/p/13173889.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!