js 宏任务,微任务
Posted 木木_Cindy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js 宏任务,微任务相关的知识,希望对你有一定的参考价值。
在了解async之后,发现一个自己不是很熟悉的点儿,在这儿记录一下
js 中存在宏任务和微任务,js 的执行顺序是 一个宏任务执行结束之后才会去执行下一个宏任务,微任务是在本宏任务的主要的任务结束之后,再去执行微任务,当所有的微任务结束之后,这个宏任务也就算执行结束了,值的注意的是,script 就是一个大的宏任务
先分类:
宏任务 srcipt > setImmediate > messageChannel > setTimeout/setInterval
微任务 promise相关的 reslove 里边的
举例说明
<script>
console.log("1")
setTimeout(function() {console.log(‘2‘)}, 0)
new Promise(function (resolve) {
console.log(‘3‘)
resolve()
}).then( function() {
console.log(‘4‘)
})
console.log(‘5‘)
</script>
结果会是 1 3 5 4 2
因为script 和 setTimeout 都是宏任务,所以setTimeout 会在script 结束之后执行,所以 2 的最后的
then 是微任务,要等宏任务的主线任务结束之后执行,所以会 是先3 ,然后跳出 执行 5, 5完成之后,宏任务的主线完成
开始执行微任务 then , 打印 4 ,之后,宏任务结束,开始执行另一个宏任务,也就是 setTimeout , 打印 2
以上是关于js 宏任务,微任务的主要内容,如果未能解决你的问题,请参考以下文章