关于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…

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理