事件循环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引擎线程执行任务队列中的下一个宏任务

参考资料:

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。