iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > VUE >javascript中有哪些微任务
  • 537
分享到

javascript中有哪些微任务

2024-04-02 19:04:59 537人浏览 泡泡鱼
摘要

本篇内容主要讲解“javascript中有哪些微任务”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“javascript中有哪些微任务”吧!

本篇内容主要讲解“javascript中有哪些微任务”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“javascript中有哪些微任务”吧!

在javascript中,微任务包含:1、“Promise”;2、“Object.observe”;3、“MutationObserver”;4、node.js环境下的“process.nextTick”;5、“async/await”。

教程操作环境:windows7系统、javascript1.8.5版、Dell G3电脑。

事件循环

JavaScript 语言的一大特点就是单线程,也就是说,同一个时间只能做一件事。为了协调事件、用户交互、脚本、UI 渲染和网络处理等行为,防止主线程的不阻塞,Event Loop 的方案应用而生。Event Loop 包含两类:一类是基于 Browsing Context,一种是基于 Worker。二者的运行是独立的,也就是说,每一个 JavaScript 运行的"线程环境"都有一个独立的 Event Loop,每一个 WEB Worker 也有一个独立的 Event Loop。

本文所涉及到的事件循环是基于 Browsing Context。

任务队列

根据规范,事件循环是通过任务队列的机制来进行协调的。一个 Event Loop 中,可以有一个或者多个任务队列(task queue),一个任务队列便是一系列有序任务(task)的集合;每个任务都有一个任务源(task source),源自同一个任务源的 task 必须放到同一个任务队列,从不同源来的则被添加到不同队列。setTimeout/Promise 等api便是任务源,而进入任务队列的是他们指定的具体执行任务。

在事件循环中,每进行一次循环操作称为 tick,每一次 tick 的任务处理模型是比较复杂的,但关键步骤如下:

  • 在此次 tick 中选择最先进入队列的任务(oldest task),如果有则执行(一次)

  • 检查是否存在 Microtasks,如果存在则不停地执行,直至清空 Microtasks Queue

  • 更新 render

  • 主线程重复执行上述步骤

在上诉tick的基础上需要了解几点:

  • js分为同步任务和异步任务

  • 同步任务都在主线程上执行,形成一个执行栈

  • 主线程之外,事件触发线程管理着一个任务队列,只要异步任务有了运行结果,就在任务队列之中放置一个事件。

  • 一旦执行栈中的所有同步任务执行完毕(此时JS引擎空闲),系统就会读取任务队列,将可运行的异步任务添加到可执行栈中,开始执行。

javascript中有哪些微任务

宏任务

(Macro)task,可以理解是每次执行栈执行的代码就是一个宏任务(包括每次从事件队列中获取一个事件回调并放到执行栈中执行)。

浏览器为了能够使得JS内部(macro)task与DOM任务能够有序的执行,会在一个(macro)task执行结束后,在下一个(macro)task 执行开始前,对页面进行重新渲染,流程如下:

(macro)task->渲染->(macro)task->...

宏任务包含:

script(整体代码)
setTimeout
setInterval
I/O
UI交互事件
postMessage
MessageChannel
setImmediate(node.js 环境)

微任务

microtask,可以理解是在当前 task 执行结束后立即执行的任务。也就是说,在当前task任务后,下一个task之前,在渲染之前。

所以它的响应速度相比setTimeout(setTimeout是task)会更快,因为无需等渲染。也就是说,在某一个macrotask执行完后,就会将在它执行期间产生的所有microtask都执行完毕(在渲染前)。

微任务包含:

Promise
Object.observe
MutationObserver
process.nextTick(Node.js 环境)
async/await

运行机制

在事件循环中,每进行一次循环操作称为 tick,每一次 tick 的任务处理模型是比较复杂的,但关键步骤如下:

  • 执行一个宏任务(栈中没有就从事件队列中获取)

  • 执行过程中如果遇到微任务,就将它添加到微任务的任务队列中

  • 宏任务执行完毕后,立即执行当前微任务队列中的所有微任务(依次执行)

  • 当前宏任务执行完毕,开始检查渲染,然后GUI线程接管渲染

  • 渲染完毕后,JS线程继续接管,开始下一个宏任务(从事件队列中获取)

如图:

javascript中有哪些微任务

到此,相信大家对“javascript中有哪些微任务”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: javascript中有哪些微任务

本文链接: https://www.lsjlt.com/news/88799.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • javascript中有哪些微任务
    本篇内容主要讲解“javascript中有哪些微任务”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“javascript中有哪些微任务”吧! ...
    99+
    2024-04-02
  • JavaScript中宏任务和微任务有哪些
    小编给大家分享一下JavaScript中宏任务和微任务有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1、微任务有哪些Promiseawait和async2、...
    99+
    2023-06-25
  • JavaScript中的宏任务和微任务详情
    目录1、微任务有哪些2、宏任务有哪些3、案例3.1 结论4、代码案例4.1 代码分析4.2 结论和运用的场景1、微任务有哪些 Promise await和async 2、宏任务有哪些...
    99+
    2024-04-02
  • JavaScript 事件循环中微任务和宏任务有什么区别
    JavaScript 事件循环中微任务和宏任务有什么区别,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。事件循环:微任务和宏任务浏览器中 Jav...
    99+
    2024-04-02
  • JavaScript 操作宏任务与微任务
    宏任务与微任务 javaScript是单线程语言(如果多线程dom会疯掉) 所以在同一时间只能执行一个任务,称为主线程,用来执行同步任务 同时还有两个任务列...
    99+
    2024-04-02
  • JavaScript 微任务和宏任务讲解
    前言: js是一门单线程语言,所以它本身是不可能异步的,但是js的宿主环境(比如浏览器、node)是多线程,宿主环境通过某种方式(事件驱动)使得js具备了异步的属性。而在js中,我...
    99+
    2024-04-02
  • JavaScript中的宏任务和微任务执行顺序
    在 JavaScript 中,宏任务和微任务是指在执行代码的过程中的两种不同的任务类型。 宏任务(macro task)指的是浏览器在执行代码的过程中会调度的任务,比如事件循环中的每...
    99+
    2022-12-27
    JavaScript 宏任务和微任务 js 宏任务和微任务执行顺序
  • JavaScript宏任务和微任务区别介绍
    目录分类宏任务微任务为什么案例分类 js中的任务,大致分为2类,一类是同步任务,另一类是异步任务。而异步任务,又分为宏任务和微任务,这两个任务是两个队列,所以是先进先出的。 同步任务...
    99+
    2024-04-02
  • 深入理解JavaScript中的宏任务和微任务机制
    目录引入宏任务与微任务引入 // 开启一个定时器 1秒后执行 setTimeout( () => { console.log(1) }, 1000) console.l...
    99+
    2023-05-18
    JavaScript宏任务 JavaScript微任务
  • JavaScript中的宏任务和微任务执行顺序是什么
    这篇“JavaScript中的宏任务和微任务执行顺序是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“JavaScript...
    99+
    2023-07-04
  • JavaScript常用来完成哪些任务
    本篇内容主要讲解“JavaScript常用来完成哪些任务”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript常用来完成哪些任务”吧! ...
    99+
    2024-04-02
  • DIV常见任务有哪些
    这篇文章主要为大家展示了“DIV常见任务有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“DIV常见任务有哪些”这篇文章吧。1.div显示滚动条 这个是很常见的一个任务了,基本是通过CSS去实...
    99+
    2023-06-08
  • JavaScript事件循环剖析宏任务与微任务
    目录前言引言为什么会有事件循环?JS是单线程的同步任务和异步任务 JS事件循环宏任务与微任务常见的宏任务有哪些?常见的微任务有哪些?执行过程总结(重点)同步任务 &mdas...
    99+
    2022-11-13
    JavaScript 事件循环宏任务微任务 JavaScript 事件循环
  • 浅谈JavaScript宏任务和微任务执行顺序
    目录一、JavaScript单线程1. 同步任务(synchronous) 2. 异步任务(asynchronous)二、任务队列(task queue)1.执行栈扩展一下...
    99+
    2024-04-02
  • Java中有哪些微服务框架
    这篇文章将为大家详细讲解有关Java中有哪些微服务框架,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1、Spring BootJava构建Spring应用程序已经有很长一段时间了,Sprin...
    99+
    2023-06-16
  • javascript中有哪些栈
    这篇文章主要讲解了“javascript中有哪些栈”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“javascript中有哪些栈”吧! ...
    99+
    2024-04-02
  • 如何进行JavaScript微任务和宏任务的分析
    这篇文章将为大家详细讲解有关如何进行JavaScript微任务和宏任务的分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。前言:js是一门单线程语言,所以它本身是不可能异步的,但是js的宿主...
    99+
    2023-06-22
  • javascript中对象有哪些
    这篇文章将为大家详细讲解有关javascript中对象有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。JavaScript有什么特点1、js属于一种解释性脚本语言;2、在绝大多数浏览器的...
    99+
    2023-06-14
  • javascript中有哪些框架
    这篇文章给大家介绍javascript中有哪些框架,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。 javascript主要框架:Angular、React、...
    99+
    2024-04-02
  • javascript中的库有哪些
    本篇内容主要讲解“javascript中的库有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“javascript中的库有哪些”吧!JavaScript 库J...
    99+
    2024-04-02
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作