事件循环2

JS中有两种任务类型:微任务(microtask)和宏任务(macrotask),在ES6中,microtask称为 jobs,macrotask称为 task。

  • 宏任务: script (主代码块)、setTimeout 、setInterval 、setImmediate 、I/O 、UI rendering
  • 微任务:process.nextTick(Nodejs) 、promise 、Object.observe 、MutationObserver
  1. 执行一个宏任务(首次执行的主代码块或者任务队列中的回调函数)
  2. 执行过程中如果遇到微任务,就将它添加到微任务的任务队列中
  3. 宏任务执行完毕后,立即执行当前微任务队列中的所有任务(依次执行)
  4. JS引擎线程挂起,GUI线程执行渲染
  5. GUI线程渲染完毕后挂起,JS引擎线程执行任务队列中的下一个宏任务

参考资料:

  • https://juejin.im/post/5cd9854b5188252035420a13
  • https://jakearchibald.com/2015/tasks-microtasks-queues-and-schedules/

你可能感兴趣的:(事件循环2)