经典面试题
console.log("1");
setTimeout(() => console.log("2"), 0);
Promise.resolve().then(() => console.log("3"));
console.log("4");
结果:1, 4, 3, 2。
JavaScript 是单线程的,事件循环让它能处理异步任务。
微任务(Promise.then)是 VIP,宏任务(setTimeout)是普通队。每执行完一个宏任务,就清空所有微任务。
setTimeout(0) 把代码推迟到同步任务和微任务执行完再说。