event loop 标准

2020-07-13  本文已影响0人  roger1253

原文: https://html.spec.whatwg.org/multipage/webappapis.html#event-loop-processing-model

只要事件循环存在,它就必须按以下步骤持续运行:

  1. taskQueue成为事件循环的任务队列之一,以定义实现的方式选择,并且所选任务队列必须至少包含一个具有该约束的可运行任务。如果没有这样的任务队列,就跳到下面的微任务步骤。

请记住,微任务队列不是任务队列,所以它在这一步中不会被选择。但是,一个与微任务源关联的任务队列,有可能在这一步被选择。在这种情况下,下一步中选择的任务最初是一个微任务,但它被改变位置成了旋转事件循环的一部分。

  1. 设置oldestTasktaskQueue中第一个可运行的任务,并将其从taskQueue中删除。
  2. 将事件循环的当前运行任务设置为oldestTask
  3. taskStartTime设为当前高精度时间。
  4. 执行oldestTask的步骤。
  5. 将事件循环当前正在运行的任务设置回null
  6. 微任务:执行微任务检查点。
  7. 设置hasARenderingOpportunityfalse
  8. 设置now为当前的高精度时间。
  9. 通过执行以下步骤报告任务的持续时间:
  1. 更新渲染:如果这是一个窗口事件循环,则:
上一篇下一篇

猜你喜欢

热点阅读