关于前端:JavaScript-事件循环机制很重要

2次阅读

共计 618 个字符,预计需要花费 2 分钟才能阅读完成。

JavaScript 事件循环机制

原文链接:https://note.noxussj.top/?source=sifo

事件循环机制

在事件循环中,每进行一次循环操作称为 tick,每一次 tick 的工作解决是比较复杂的。

关键步骤如下:

  1. 执行一个宏工作
  1. 执行过程中如果遇到微工作,就将它增加到微工作的工作队列中
  1. 宏工作执行结束后,立刻执行以后微工作队列中的所有微工作(顺次执行)
  1. 以后宏工作执行结束,开始查看渲染,而后 GUI 线程接管渲染
  1. 渲染结束后,JS 线程持续接管(开始下一个宏工作)

流程图如下:

那什么是宏工作、微工作呢?


宏工作

宏工作(macro task)能够了解为调用栈中的工作就是宏工作。

浏览器为了可能使得 JavaScrpit 外部 macro task 与 DOM 工作可能有序的执行,会在一个 macro task 执行完结后,在下一个 macro task 执行开始前,对页面进行从新渲染。

macro task 次要蕴含:script 整体代码、setTimeout、setInterval。


微工作

微工作(micro task)次要是寄存一些异步工作,能够了解是在以后 macro task 执行完结后立刻执行的工作。所以它的响应速度相比 setTimeout 会更快。

micro task 次要蕴含:Promise.then、await 办法前面的代码属于 .then(await 相当于一个 Promise)。


原文链接:https://note.noxussj.top/?source=sifo

正文完
 0