脚本宝典收集整理的这篇文章主要介绍了事件循环、同步异步、宏任务微任务,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
看了很多对于微任务宏任务事件循环的讲解,有很多不同的地方,有人说代码块是宏任务,所以事件循环是宏->微的循环,还有人说先微后宏任务。
常见宏任务包括:
常见微任务包括
执行的过程大概是:
注意:promise中.then内才是异步微任务,new promise中前面部分是同步任务,setTimeout也只有里面回调才会进入异步队列。
1 setTimeout(() => { 2 console.LOG(1); 3 setTimeout(() => { 4 console.log(3) 5 }, 0) 6 new Promise(resolve => { 7 resolve() 8 console.log('promise') 9 }).then(() => { 10 console.log('then') 11 }) 12 }, 0) 13 14 setTimeout(() => { 15 console.log(2) 16 }, 0) 17 console.log('First')
以上代码的执行过程:同步代码console.log(first)进入主线程执行输出,将俩个宏任务回调依次进入宏任务队列取名macro1 macro2。随后发现微任务队列为空,则宏任务队列中macro1进入执行栈,执行同步代码console.log(1)、console.log('promise');发现并将宏任务macro3放入宏任务队列中,.then中内容为微任务micro1放入微任务队列中。此时一轮结束,宏任务队列中是 macro2、macro3,微任务队列中是micro1。接下来重新循环,执行微任务micro1,结束后执行macro2、macro3。最后结果显示 first、1、promise、then、2、3.
总结一下面试题看代码输出的套路:
https://juejin.cn/user/2999123452373735
以上是脚本宝典为你收集整理的事件循环、同步异步、宏任务微任务全部内容,希望文章能够帮你解决事件循环、同步异步、宏任务微任务所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。