day192-event loop-处理过程

要点

  1. event loop的处理过程(Processing model)

    规范

event-loop-processing-model

只要event loop存在,就会不断执行下面的步骤:

  1. 让task queue成为事件循环的任务队列之一,以用户代理定义的方式选择,约束条件是所选任务队列必须至少包含一个可运行的任务。如果没有这样的任务队列,那么跳到下一个微任务步骤。
  2. 让oldesttask成为taskqueue中的第一个可运行任务,并将其从taskqueue中删除。
  3. 通过执行以下步骤报告用户代理不执行此循环的持续时间: ….
  4. 将事件循环当前正在运行的任务设置为OldestTask。
  5. 执行旧任务的步骤。
  6. 从其任务队列中删除OldestTask。
  7. Microtasks: 执行microtasks任务检查点(microtasks队列里的任务)。

  8. 更新渲染

  9. 如果这是一个worker event loop,但是没有任务在task队列中,并且WorkerGlobalScope对象的closing标识为true,则销毁event loop,中止这些步骤,然后进行定义在Web workers章节的run a worker。
  10. 返回到第一步。
文章作者: lmislm
文章链接: http://lmislm.com/2019/07/24/2019-07-24/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LMISLMのBlog