- 微工作:Promise,async/await,process.nextTick
- dom
- 宏工作:包含整体代码 script,setTimeout,setInterval
微工作、宏工作会进入到不同的 event queue。比方 setTimeout 和 setInterval 会进入雷同的 Event Queue。
在一个 event loop,先执行 微工作 的 queue,在执行 dom,最初 宏工作 的 queue
遇到 console 立刻执行
首先会遇到 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);
输入:1 4 7 5 another (dom) 2 3 6