理解 事件循环、宏任务和微任务

454 阅读1分钟
  1. event loop JS主线程不断的循环往复的从任务队列中读取任务,执行任务,这种运行机制称为事件循环
  2. Microtasks(微任务)、Macrotasks(宏任务 Microtasks和Macrotasks是异步任务的一种类型,Microtasks的优先级要高于Macrotasks,下面是它们所包含的api
    1. microtasks(微任务)
      • process.nextTick
      • promise
      • Object.observe (废弃)
      • MutationObserver
    2. macrotasks(宏任务)
      • setTimeout
      • setImmerdiate
      • setInterval
      • I/O
      • UI 渲染
  3. 执行顺序 同步任务 -> 微任务 -> 宏任务
    async function async1() {
        console.log('async1 start');
        await async2();
        console.log('async1 end');
    }
    async function async2() {
        console.log('async2');
    }
    console.log('script start');
    setTimeout(function() {
        console.log('setTimeout');
    }, 0)
    async1();
    new Promise(function(resolve) {
        console.log('promise1');
        resolve();
    }).then(function() {
        console.log('promise2');
    });
    console.log('script end');
    // script start
    // async1 start
    // async2
    // promise1
    // script end
    // async1 end
    // promise2
    // setTimeout