js事件循环

Posted Vicky沛沛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js事件循环相关的知识,希望对你有一定的参考价值。

gitbook完整版集合

事件循环

异步:定时器、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

以上是关于js事件循环的主要内容,如果未能解决你的问题,请参考以下文章

Node.js 事件循环

Node.js 事件循环

Node.js 事件循环

js事件循环机制

JS-线程事件循环任务队列

JS-线程事件循环任务队列