zoukankan      html  css  js  c++  java
  • 宏任务(macrotask)和微任务(microtask)异步任务的分类

    /*
    * 宏任务
    *   分类: setTimeout setInterval requrestAnimationFrame
    *   1. 宏任务所处的队列就是宏任务队列
    *   2. 第一个宏任务队列中只有一个任务: 执行主线程的js代码
    *   3. 宏任务队列可以有多个
    *   4. 当宏任务队列的中的任务全部执行完以后会查看是否有微任务队列如果有先执行微任务队列中的所有任务,如果没有就查看是否有宏任务队列
    *
    * 微任务
    *   分类: new Promise().then(回调) process.nextTick
    *   1. 微任务所处的队列就是微任务队列
    *   2. 只有一个微任务队列
    *   3. 在上一个宏任务队列执行完毕后如果有微任务队列就会执行微任务队列中的所有任务
    * */
     
    console.log('----------------- start -----------------');
    
    setTimeout(() => {
      console.log('setTimeout');
    }, 0)
    
    new Promise((resolve, reject) =>{
      for (var i = 0; i < 5; i++) {
        console.log(i);
      }
      resolve();  // 修改promise实例对象的状态为成功的状态
    }).then(() => {
      console.log('promise实例成功回调执行');
    })
    
    
    
    console.log('----------------- end -----------------');

    结果:

    ----------------- start -----------------
    0
    1
    2
    3
    4
     ----------------- end -----------------
     promise实例成功回调执行
    setTimeout

    异步执行顺序是先执行微任务,再执行宏任务(宏任务是异步(宏任务里面也是先微任务再宏任务))

    顺序是: 先同步加一条异步的微任务

    ,再异步,加上 宏任务和微任务

    同步从上之下执行

  • 相关阅读:
    跟一声响骚扰说“拜拜”
    来电过滤 全靠防火墙
    android sd卡读取数据库
    Java程序员十戒
    Java常用的正则表达式验证
    Java 3D 教程:6. Java 3D 与用户界面
    成为Java高手的25个学习目标
    Java数据结构内容整理
    Java中类与类之间的关系
    求助,Java字符串分割问题
  • 原文地址:https://www.cnblogs.com/queenDream/p/13476522.html
Copyright © 2011-2022 走看看