• 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>
  • 相关阅读:
    Kotlin扩展深入解析及注意事项和可见性
    Kotlin属性揭秘与延迟初始化特性
    Kotlin伴生对象及其字节码内幕详解
    Kotlin继承与重写重要特性剖析
    Kotlin构造方法详解与初始化过程分析
    Range与面向对象的Kotlin
    Kotlin编译器优化与when关键字详解
    Kotlin基础特性深入讲解
    java读取mysql表的注释及字段注释
    mysql导入导出sql文件
  • 原文地址:https://www.cnblogs.com/wangqi2019/p/16355096.html
Copyright © 2020-2023  润新知