js代码执行时
可分为同步和异步 而 异步中又可 分为 微任务 和宏任务
宏任务:setTimeout 、setInteval、Ajax、DOM事件(nextTick最早执行)
微任务:Promise、async/await
执行时
一般 同步–》 异步—》 微任务 --》 宏任务 —》
console.log('---start---');//第一轮主线程
setTimeout(() => {
console.log('setTimeout'); // 将回调代码放入个宏任务队列,第二轮宏任务执行
}, 0);
new Promise((resolve, reject) => {
console.log('---Promise第一轮微任务同步执行---');//第一轮微任务同步执行
resolve()
}).then(()=>{
console.log('Promise.then实例成功回调执行'); // 将回调代码放入微任务队列,第一轮宏任务执行完后立即执行
});
console.log('---end---');//第一轮主线程结束