js执行同步任务和异步任务
js基础知识
console.log(1);//同步
let a = setTimeout(() => {console.log(2)}, 0);//回调
console.log(3);//同步
Promise.resolve(4).then(b => {
console.log(b);//异步
clearTimeout(a);
});
console.log(5);//同步
分析
执行顺序:同步=》异步=》回调
异步任务,包括宏任务和微任务,先执行微任务,后执行宏任务,promise 是微任务,会在当前轮事件循环结束前执行; setTimeout 是宏任务,在下一轮事件循环执行; 所以这个 setTimeout 设置的定时器被取消掉了。
先执行同步代码 输出1,3,5
在执行异步代码 输出 4
取消了定时器事件 于是不输出2
链接: https://blog.csdn.net/qq_44656685/article/details/114023646