js 事件循环
<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>