<script>
setTimeout(() => {
console.log("b");
}, 0);
setTimeout(() => {
console.log("c");
}, 10);
new Promise((resolve, reject) => {
resolve();
console.log("d");
}).then(() => {
// 微任务
console.log("e");
});
requestAnimationFrame(function () {
console.log('requestAnimationFrame')
})
// 一定记住,先执行 宏任务及该宏任务下所有的微任务后,再执行 下一个宏任务及下一个宏任务下所有的微任务!!!,以此循环
// d e b requestAnimationFrame c
/*
console.log("d");这个就是正常的代码,不属于宏任务微任务,正常执行
宏任务有 script console.log("b"); console.log("c"); requestAnimationFrame
微任务有 console.log("e"); 属于script的微任务
script 宏任务梯队里 只有 console.log("e");这个微任务 所以当script( console.log("d"); )以及script里所有的微任务( console.log("e"); )运行后 再执行下一个宏任务(console.log("b");)
=》 而宏任务(console.log("b");)里没有微任务,所以当宏任务(console.log("b");)执行后在执行下一个宏任务(console.log("c");),而宏任务(console.log("c");)同样没有微任务,
=》 所以 宏任务(console.log("c"))执行后执行下一个宏任务requestAnimationFrame
而console.log("c");明显有10ms的延时,在这10ms期间, requestAnimationFrame肯定都已经打印了
但是 console.log("c")肯定是在 requestAnimationFrame 他之前执行的,只不过在10ms期间, requestAnimationFrame已经运行
*/
</script>