事件循环EventLoop

72 阅读1分钟

帮助理解microTask和Task的好题目。原因是JS是单线程,不然浏览器不知道听谁的,会错乱。所以只能按照单线程处理。

此处: Promise是微任务(.then的时候注册promise)。 setTimeout是宏任务。

var a = 1;
console.log('a:', a)
var b = 2;
console.log('b:', b)
setTimeout(function task1(){
  console.log('task1:', 5)
  Promise.resolve(6).then(function microtask2(res){
    console.log('microtask2:', res)
  })
}, 0)
Promise.resolve(4).then(function microtask1(res){
  console.log('microtask1:', res)
})
var c = 3;
console.log('c:', c)

输出

an

![image.png](p1-juejin.byteimg.com/tos-cn-i-k3…