宏队列与微队列

发布日期:2018-10-05 阅读量:371

1. 宏队列

  1)DOM事件回调

   2)Ajax回调

   3)定时器回调(setTimeout、setInterval、setImmediate)

2. 微队列

   1)Promise回调

   2)Mutation回调

3. 事件循环( Event Loop)

   同步和异步任务分别进入不同的执行环境,同步的进入主线程,即主执行栈,异步的进入任务队列 (Event Queue,机制为先进先出)。主线程内的任务执行完毕为空,会去任务队列读取对应的任务,推入主线程执行。 上述过程的不断重复就是我们说的 Event Loop (事件循环)。同步任务 > 微任务 > 宏任务

4. 测试

    setTimeout(() => {
        console.log(1);
    }, 0);
    Promise.resolve().then(() => {
        console.log(2);
    });
    Promise.resolve().then(() => {
        console.log(3);
    });
    console.log(4);
    // 打印顺序为
    // 4 2 3 1