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