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>

 

posted @ 2022-06-08 11:40  我是一名好程序员  阅读(40)  评论(0编辑  收藏  举报