乐趣区

关于javascript:浅谈-js-宏任务和微任务

js 作为单线程的运行机制,必然有本人的运行程序

js 可分为同步工作和异步工作,对于同步的工作,咱们当然晓得依照程序进行执行,然而对于 ` 异步 ` 的操作,会有一个优先级的执行程序,别离为 ` 宏工作 ` 和 ` 微工作 `

宏工作 (macrotasks) 和微工作(microtasks)??蕴含什么?

`macrotasks: setTimeout, setInterval, setImmediate, I/O, UI rendering`

`microtasks: process.nextTick, Promises, Object.observe(废除), MutationObserver`

Js 运行机制:

JS 是 单线程 执行:

在浏览器环境中,有 JS 引擎线程和渲染线程,且两个线程互斥。
Node 环境中,只有 JS 线程。

宿主:

JS 运行的环境。个别为浏览器或者 Node。

执行栈:

是一个存储函数调用的 栈构造 ,遵循 先进后出 的准则。

Event Loop:


JS 引擎常驻于内存中,期待宿主将 JS 代码或函数传递给它。
也就是期待 宿主环境调配宏观工作,重复期待 – 执行 即为事件循环。

Event Loop 中,每一次循环称为 tick,每一次 tick 的工作如下:

  • 执行栈抉择最先进入队列的宏工作(个别都是 script),执行其同步代码直至完结;
  • 查看是否存在微工作,有则会执行至微工作队列为空;
  • 如果宿主为浏览器,可能会渲染页面;
  • 开始下一轮 tick,执行宏工作中的异步代码(setTimeout 等回调)

继续更新中。。。
深刻理解链接:https://www.jianshu.com/p/bfc…

退出移动版