美文网首页
异步任务中在分为宏任务和微任务

异步任务中在分为宏任务和微任务

作者: jesse28 | 来源:发表于2021-03-14 08:06 被阅读0次

常见的微任务有:process.nextTick、Promise和 MutationObserver(监听DOM变化的事件)
常见的宏任务有:setTimeout、setInterval、setImmediate、 script标签中包含整体的代码块、 I/O操作、 UI渲染等。

微任务的优先级要比宏任务的优先级高,也就是说微任务要先执行,然后在执行宏任务。

image.png
promise(resolve=>{
console.log("Promise");
resoleve()   
})

这上面代码其实是构造函数是立即执行的,也就是说他是同步代码。然后后面是console.log(“jesse”)这个也是同步代码,所以输出是Promise 和 jesse.

image.png

执行到这一步我们宏任务队列和微任务队列中都有代码,但是这边微任务的优先级是要比宏任务高,所以是先打印出"then",然后在打印出"定时器"


image.png

3.随后我们在切换一个场景,我们在seetTimeOut里面在写入一个Promise.
原理同上,当我们执行到setTimeOut宏任务的的时候又会产生同步代码,输出console.log("定时器");又输出 console.log("setTimeout Promise");然后执行resolve()是改变promise状态,产生微任务,所以又输出cosnole.log("setTimeout then")


image.png

相关文章

网友评论

      本文标题:异步任务中在分为宏任务和微任务

      本文链接:https://www.haomeiwen.com/subject/cjuxcltx.html