22、事件循环

异步:定时器、ajax、onclick、promise(new Promise立刻执行,then异步)

  • 宏任务:定时器(setTimeout、setInterval)、requestAnimationFrame、I/O
  • 微任务:process.nextTick、Promise、Object.observe、MutationObserver
  • 宏任务队列和微任务队列,执行主线程任务,宏任务放到宏任务队列,微任务放到微任务队列。只有在微任务队列中的微任务全部执行完成之后才会去执行下一个宏任务。注意:执行宏任务的时候,也会产生微任务,继续执行上面过程
console.log('1')

setTimeout(function(){
  console.log('2')
  new Promise(function(resolve){
    console.log('3')
    resolve()
  }).then(function(){
    console.log('4')
  })
})

new Promise(function(resolve){
  console.log('5')
  resolve()
}).then(function(){
  console.log('6')
})

setTimeout(function(){
  console.log('7')
  new Promise(function(resolve){
    console.log('8')
    resolve()
  }).then(function(){
    console.log('9')
  })
  console.log('10')
},0)

console.log('11')


//1 5 11 6 2 3 4 7 8 10 9

results matching ""

    No results matching ""