共计 618 个字符,预计需要花费 2 分钟才能阅读完成。
JavaScript 事件循环机制
原文链接:https://note.noxussj.top/?source=sifo
事件循环机制
在事件循环中,每进行一次循环操作称为 tick,每一次 tick 的工作解决是比较复杂的。
关键步骤如下:
- 执行一个宏工作
- 执行过程中如果遇到微工作,就将它增加到微工作的工作队列中
- 宏工作执行结束后,立刻执行以后微工作队列中的所有微工作(顺次执行)
- 以后宏工作执行结束,开始查看渲染,而后 GUI 线程接管渲染
- 渲染结束后,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
正文完