JavaScript 的事件循环、宏任务、微任务

news/2024/11/17 6:43:22/文章来源:https://www.cnblogs.com/zxn-114477/p/18382062

JavaScrtipt 执行顺序

首先,必须要明确,在JavaScript中,所有任务都在主线程上执行。任务执行过程分为同步任务异步任务两个阶段。异步任务的处理经历两个主要阶段:Event Table(事件表)和 Event Queue(事件队列)。Event Table存储了宏任务的相关信息,包括事件监听和相应的回调函数。当特定类型的事件发生时,对应的回调函数被添加到事件队列中,等待执行。例如,你可以通过addEventListener来将事件监听器注册到事件表上。
执行流程图
image

事件循环

  1. 概念:在事件循环中,当主线程执行完当前的同步任务后,会检查事件队列中是否有待处理的事件。如果有,主线程会取出事件并执行对应的回调函数。这个循环的过程被称为事件循环(Event Loop),它由主线程和任务队列两部分组成。主线程负责执行同步任务,而异步任务则通过任务队列进行处理。这种机制保证了异步任务在适当的时机能够插入执行,从而实现了JavaScript的非阻塞异步执行。
  2. 执行步骤:
    事件循环的tick机制是指事件循环在每个迭代中执行的操作。一个tick通常包括以下步骤:
    执行栈清空:JavaScript引擎首先执行执行栈中的所有同步任务。
    微任务执行:执行栈清空后,事件循环会执行所有可用的微任务。
    宏任务执行:微任务执行完毕后,事件循环会从宏任务队列中取出一个任务并执行。
    渲染更新:在浏览器环境中,UI渲染可能会在每个tick之后发生,以更新浏览器界面。

概括

js有两种任务,同步任务和异步任务;异步任务通过任务队列机制来执行代码;任务队列里面分微任务和宏任务。宏任务是由宿主发起的,而微任务由JavaScript自身发起。
微任务:promise process.nextTick() Proxy MutaionObserver
宏任务:setTimeout \ setInterval \ setImmediate \ I/O \ UI交互 、 DOM事件 、 网络请求

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/787842.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

One-for-All:上交大提出视觉推理的符号化与逻辑推理分离的新范式 | ECCV 2024

通过对多样化基准的严格评估,论文展示了现有特定方法在实现跨领域推理以及其偏向于数据偏差拟合方面的缺陷。从两阶段的视角重新审视视觉推理:(1)符号化和(2)基于符号或其表示的逻辑推理,发现推理阶段比符号化更擅长泛化。因此,更高效的做法是通过为不同数据领域使用分…

投标流程

电脑不能安装WPS 国家电网新一代电子商务平台 (sgcc.com.cn) https://sign.utcsoft.com/utcbpc/service/download.html?q=ecp20 下载安装“供应商投标工具”

在Windows上搭建自己的Git服务器的图文教程

一、简介 以前,在别家的公司,一般早就把源代码管理工具搭建好了,很少有机会自己搭建一套。最近,公司也许要把现在不少的源码进行管理,于是我打算自己搭建源代码管理服务器。说起源代码管理,当然有很多中解决方案,我个人偏向搭建一个 Git 服务器。毕竟这个自己用的比较多…

Datawhale AI+X 深度学习入门(一)

一.机器学习的定义和核心 1.机器学习就是让机器具备找一个函数的能力。机器具备找函数的能力以后,它可以做很多事。 2.在机器学习领域里面,除了回归跟分类以外,还有结构化学习(structured learning)。机器不只是要做选择题或输出一个数字,而是产生一个有结构的物体,比如…

浅谈二分算法

浅谈二分算法 二分 首先知道一下二分是什么。 二分,是一种快速处理大型数据的方法。基本逻辑是折半查找。 设有一个共有 \(n\) 个数字的数组,要从中查询某个元素,就可以用二分查找。 注:这里的数组默认其成员数值具有单调性。这个点十分重要。 还记得小时候(我现在才新初一…

推荐

DIN假设 \(V_i^{shop},V_i^{good},V_i^{cate}\) 分别表示历史第 \(i\) 次点击的 shop_id,good_id,cate_id, \(V_a^{shop},V_a^{good},V_a^{cate}\) 分别表示候选商品的 shop_id,good_id,cate_id,则两个不同版本用户兴趣表达 \(V_u\) 计算方式如下 \[\begin{align} g\left…

优化器

优化器 目录优化器SGDAdagradAdadeltaRMSpropAdamAdamW SGD 随机梯度下降 问题:训练轨迹会呈现锯齿状,这无疑会大大延长训练时间。同时,由于存在摆动现象,学习率只能设置的较小,才不会因为步伐太大而偏离最小值。 Momentum:将一段时间内的梯度向量进行了加权平均,分别计…

读软件开发安全之道:概念、设计与实施10安全设计审查

安全设计审查1. 安全设计审查 1.1. Security Design Review,SDR 1.2. 将安全性融入软件设计的最佳方法之一是戴上“安全帽”进行单独的设计审查 1.3. 安全审查员是熟悉软件运行的系统和环境,以及知道如何使用它的人,但他们不参与设计工作,这能够给予他们距离感以保持客观性…

【Java】FastJson 利用JSONPath.eval快速获取目标json的属性值

一、需求场景: JSON串格式化之后,JSON树的属性深度太长了 二、代码实现: 语法等效MySQL的JSON读取方式 方法调用的返回类型为Object,强转至String进行处理/* 读取报告时间 */ Object reportDateEval = JSONPath.eval(jsonObject, "$.categories[0].children[0].data.…

10.网络安全技术

12-1 数据备份策略和盘阵列备备份方式12-2 加密技术12-3 入侵检测系统IDS12-4 入侵防护系统IPS脚本属于应用12-5 网络版防病毒软件的安装及配置12-6 防火墙PIX配置过程下面nameif常考内网100外网0下面管道第二常考www是默认的80端口C,监视模式TCPorUDPfixup nat global

30 分钟内了解 IEC 61850

30 分钟内了解 IEC 61850 索引术语——IEC 61850 配置、语义分层对象数据模型、客户端 - 服务器、发布 - 订阅。平时学习标准或调试IEC61850设备,需要IEC61850模拟器,推荐一款:客户端下载地址:IEC61850客户端模拟器 服务端下载地址:IEC61850服务端模拟器谣传 IEC 61850 过…

6.2K star!推荐一款开源混沌工程测试平台:Chaos Mesh

1、Chaos Mesh 介绍 Chaos Mesh是一个开源的混沌工程平台,旨在帮助用户在生产环境中测试、验证和优化其应用程序的可靠性和稳定性。通过引入故障注入和混沌工程原则,Chaos Mesh可以模拟各种故障场景,如网络延迟、节点故障、磁盘故障等,以帮助用户发现和解决系统中的潜在问题…