任务

35 阅读1分钟

image.png

image.png

image.png

现在我们看看宏任务,微任务 宏任务{ settimeout setInterval I/O 事件 UI交付事件 postMessage MessageChannel setImmediate }

微任务{ Promise.then Object.observe MutaionObserver process.nextTick(Node.js 环境) }

image.png

setTimeout(_ => console.log(4))
 
new Promise(resolve => {
  resolve()
  console.log(1)
}).then(_ => {
  console.log(3)
 
})
 
console.log(2)

image.png

image.png

setTimeout(_ => console.log(6), 5000)//创建宏任务
setTimeout(_ => console.log(4), 3000)//创建宏任务
 
new Promise(resolve => {            //创建一个微任务
  resolve()
  console.log(1)
}).then(_ => {  
  console.log(3)
  Promise.resolve().then(_ => {
    console.log('before timeout')
    setTimeout(() => {            //增加宏任务
      console.log(5);            
    }, 0);
    for (let i = 0; i < 90; i++) {//增加一个微任务
      if (i == 89) {
        console.log(7);
      }
    }
  }).then(_ => {                   //增加一个微任务
    Promise.resolve().then(_ => {  
      console.log('also before timeout')
    })
  })
})
 
console.log(2)

blog.csdn.net/mnilz/artic…