美文网首页
javascript事件循环

javascript事件循环

作者: 忍不住的k | 来源:发表于2020-05-12 15:35 被阅读0次
异步任务栈分为:

宏任务(macrotask):

  • setTimeout
  • setImmediate
  • setInterval
  • MessageChannel
  • UI rendering
  • 网络I/O以及用户I/O
  • network

微任务(microtask):

  • process.nextTick
  • Promise
  • Object.observe
  • MutationObserver
事件循环机制
  • 执行一个宏任务(栈中没有就从事件队列中获取)
  • 执行过程中如果遇到微任务,就将它添加到微任务的任务队列中
  • 宏任务执行完毕后,立即执行当前微任务队列中的所有微任务(依次执行)
  • 当前宏任务执行完毕,开始检查渲染,然后GUI线程接管渲染
  • 渲染完毕后,JS线程继续接管,开始下一个宏任务(从事件队列中获取)

requestAnimationFrame:会再UI渲染之前执行,微任务执行完之后
requestIdleCallback:会在帧的剩余空闲时间执行,如果传第二个参数超时时间,没有空闲时间的话会强制执行

image.png

宏任务 ---> 微任务 ---> requestAnimationFrame --->UI线程渲染 ---> 宏任务

image.png

相关文章

  • Js事件循环

    列表 JavaScript事件循环 测试金字塔 stub JavaScript事件循环理解 javaScript语...

  • JavaScript事件循环

    js是一门单线程的语言,不可能进行多线程编程,异步编程就是多线程编程一种模式,但是我们经常讲到js的异步编程,其实...

  • JavaScript - 事件循环

    前言 JavaScript是一门单线程、非阻塞的脚本语言。 单线程意味着javascript代码在执行的任何时候,...

  • javascript事件循环

    EventLoop 以下内容仅限于自己理解,可能并不全面或者有错误 参考文档:https://www.cnblog...

  • JavaScript事件循环

    解释JavaScript的事件循环 这个帖子关于什么 浏览器普遍将JavaScript作为脚本语言,这篇文章有利于...

  • javascript事件循环

    异步任务栈分为: 宏任务(macrotask): setTimeout setImmediate setInter...

  • JavaScript事件循环

    事件循环是什么?事实上我把事件循环理解成我们编写的JavaScript和浏览器或者Node之间的一个桥梁。 浏览器...

  • JavaScript事件循环

    为什么js是单线程 JavaScript的单线程,与它的用途有关。作为浏览器脚本语言,JavaScript的主要用...

  • JavaScript事件循环

    Tasks(任务),microtasks(微任务),queues(队列),schedules(调度): 举个例子:...

  • JavaScript-事件循环

    参考JavaScript运行机制之事件循环(Event Loop)详解 从setTimeout说事件循环模型 单...

网友评论

      本文标题:javascript事件循环

      本文链接:https://www.haomeiwen.com/subject/vgubnhtx.html