- 微任务:Promise,async/await,process.nextTick
- dom
- 宏任务:包括整体代码script,setTimeout,setInterval
微任务、宏任务会进入到不同的event queue。比如setTimeout和setInterval会进入相同的Event Queue。遇到 console 立即执行
在一个event loop,先执行微任务的queue,在执行dom,最后宏任务的queue
首先会遇到setTimeout,将其放到宏任务event queue里面
然后回到 promise , new promise 会立即执行, then会分发到微任务
console.log("1")
setTimeout(()=>{
console.log("2")
})
new Promise((resolve) => {
resolve()
console.log("3")
}).then(()=>{
console.log("4")
}).finally(()=>{
console.log("5")
})
console.log("6")
输出
1 3 6 4 5(dom)2
第二个例子
console.log(1);
setTimeout(() => {
console.log(2);
Promise.resolve().then(() => {
console.log(3)
});
});
new Promise((resolve, reject) => {
console.log(4)
resolve(5)
}).then((data) => {
console.log(data);
}).then((data) => {
console.log('another');
})
setTimeout(() => {
console.log(6);
})
console.log(7);
【js事件循环】输出:
1 4 7 5 another (dom) 2 3 6
推荐阅读
- 前端开发工程师知识体系|H5画布 canvas 入门到精通 _ 第三部分(canvas 库 Konva.js 的使用)
- vue.js|尚品汇学习笔记
- vue.js|尚品汇后台管理系统
- Vue|解决导航守卫router.beforeResolve使用不了this.$store
- javascript|尚品汇个人理解笔记
- 尚硅谷电商项目|尚硅谷-尚品汇项目开发总结(第三天)
- 尚硅谷电商项目|尚硅谷-尚品汇项目开发总结(第四天)
- 尚硅谷电商项目|尚硅谷-尚品汇项目开发总结(第十二天)
- 尚硅谷电商项目|尚硅谷-尚品汇项目开发总结(第十六天,电商项目完)