33、js - 事件循环 微任务 宏任务

news2024/11/27 21:57:06

1、事件循环♻️(EventLoop)

js是单线程语言,也就是某一刻只能执行一行代码,为了让耗时代码不阻塞其他代码运行,设计了事件循环模型

事件循环是一个并发模型,负责执行代码、收集异步任务的模型,在调用栈空闲,反复调用任务队列里回调函数的执行机制,就叫事件循环。

这个模型与其他语言的模型截然不同,比如C和Java

2、宏任务

宏任务:由浏览器环境执行的异步代码

任务(代码)

执行所在环境

js脚本执行事件(script)

浏览器

setTimeout/setInterval

浏览器

ajax请求完成事件

浏览器

用户交互事件等

浏览器

3、微任务

微任务:由js引擎环境执行的异步代码

Promise本身是同步的,而then和catch回调函数是异步的

任务(代码)

执行所在环境

Promise对象.then()

js引擎

4、宏任务和微任务的执行顺序

(1)调用栈的代码先执行。

(2)遇到宏任务,就把宏任务放到宿主环境里进行计时,时间到了宏任务会到宏任务队列里进行排队等待执行。

(3)当调用栈的代码执行完了,会先执行微任务队列里的任务。

(4)微任务队列里的任务都执行完了,最后才执行宏任务队列里的任务。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

容器(第四篇)创建镜像-dockerfile

创建镜像有三种方法,分别为基于已有镜像创建、基于本地模板创建以及基于Dockerfile创建。 基于现有镜像创建: ①先使用现有镜像创建容器 docker run ②再进入容器进行内容更新 docker exec ③最后提交成新的镜像 docker commit 或 docker…

Linux远程管理工具(PuTTY和SecureCRT)

通过《Linux远程管理协议》一节可以知道,Linux远程管理服务器多基于 SSH 协议。本节给大家介绍 2 种常见的基于 SSH 协议的远程管理工具,分别是 PuTTY 和 SecureCRT。 在使用远程管理工具之前,应先设置宿主机 Windows 与虚拟机 Linux 能够连…

mysql 联合查询

mysql联合查询 联合查询:union,将多次查询(多条select语句)的结果,在字段数相同的情况下,在记录的层次上进行拼接。 基本语法 联合查询由多条select语句构成,每条select语句获取的字段数相同,但与字段类…

Seata介绍、原理、配置

目录 介绍: 核心组件: 原理: Seata 会有 4 种分布式事务解决方案,分别是 AT 模式、TCC 模式、Saga 模式和 XA 模式 AT模式原理: 一阶段: 二阶段提交: 二阶段回滚: Seata配置…

【轨迹跟踪】基于自适应跟踪(EAT)方法的无人机/移动机器人轨迹跟踪(MatlabSimulink)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

随着信息技术的快速发展,编程已经成为一个越来越重要的技能。那么,我们该如何入门编程呢?

*随着信息技术的快速发展,编程已经成为一个越来越重要的技能。那么,我们该如何入门编程呢? 一、自学编程需要注意什么? 自学编程需要注意以下几点: 设定清晰的学习目标:在开始学习编程前,你需…

chatgpt赋能python:Python在485读电表方面的应用

Python在485读电表方面的应用 介绍 近年来,随着智能电网和智慧城市的不断发展,越来越多的城市和企事业单位开始关注能源消费情况并采取有效管理手段,实现节能减排。而想要实现对能源消费情况的监测和控制,就需要能够对电表进行读…

Docker数据管理和网络通信

Docker 的数据管理 管理 Docker 容器中数据主要有两种方式:数据卷(Data Volumes)和数据卷容器(DataVolumes Containers)。 1.数据卷 数据卷是一个供容器使用的特殊目录,位于容器中。可将宿主机…

MQTT协议基本讲解(结合netty)

正文 前提MQTT结构可变报文头(Variable Header)有效负荷(payload)固定报文头(Fixed Header)消息类型(Message Type)QoS级别标志(0,1,2&#xff09…

Spring Cloud OpenFeign源码解析,代理的魅力一展无遗

文章目录 一、OpenFeign简介二、OpenFeign中Bean的动态装载1、EnableFeignClients2、registerFeignClients3、FeignClientFactoryBean.getObject4、loadBalance5、DefaultTarget.target6、ReflectiveFeign.newInstance生成代理(1)targetToHandlersByName…

C语言字符及字符串讲解

文章目录 前言一、字符介绍和使用二、字符串介绍和使用三、字符串操作函数四、字符串的长度和字符串所占内存空间的大小总结 前言 C 语言中的字符和字符串是常用的数据类型。字符是一个单个的字母、数字、标点符号或者其他可打印的符号,使用单引号 ’ ’ 表示&…

Linux route命令实战:route 命令实战教程,配置静态路由,删除路由表项

前言 大家好,又见面了,我是沐风晓月,本文是专栏【linux基本功-基础命令实战】的第61篇文章。 专栏地址:[linux基本功-基础命令专栏] , 此专栏是沐风晓月对Linux常用命令的汇总,希望能够加深自己的印象&am…

使用大型语言模(LLM)构建系统(四):链式提示

今天我学习了DeepLearning.AI的 Building Systems with LLM 的在线课程,我想和大家一起分享一下该门课程的一些主要内容。 下面是我们访问大型语言模(LLM)的主要代码: import openai#您的openai的api key openai.api_key YOUR-OPENAI-API-KEY def get_…

word如何转化为pdf格式?分享四个方法给大家!

在工作和学习中,经常需要对文档进行转换,其中将Word文档转换为PDF是最常见的格式转换之一。下面介绍几种常用的转换方法,包括使用记灵在线工具。 方法一:使用Word软件直接转换 如果你使用的是电脑上的Word软件,可以直…

vue3ts安装sass(scss)

序 1、我附上个sass的github(跟本教程无关)地址GitHub - sass/sass: Sass makes CSS fun! 2、博主本地环境 "vue": "^3.2.47", "typescript": "^5.0.2" "vite": "^4.3.9", node18.12.1 3、…

外贸企业必看!这五种企业邮箱最适合你的跨国业务需求

在当今的数字世界中,电子邮件的使用对任何外贸企业的成功都至关重要。在技术的冲击下,企业开展运营以及与客户、潜在客户和合作伙伴沟通的方式发生了巨大变化,电子邮件迅速成为外贸中首选的沟通方式。 说到哪种企业邮箱最适合外贸企业使用&am…

MATLAB使用技巧之局部放大图的制作及文本箭头的便捷设置

MATLAB使用技巧之局部放大图的制作及文本箭头的便捷设置 文章目录 MATLAB使用技巧之局部放大图的制作及文本箭头的便捷设置制作局部放大图的方法文本箭头的便捷设置小结 本文主要介绍如何在MATLAB中绘制局部放大图和如何便捷地设置文本箭头的相关内容,以作后续回顾之…

CISP-PTE2022最新考试经验分享

CISP_PTE2022年10月份考试心得体会 2022年9月份由于公司需要,参加了中启航的CISPPTE培训,总培训时间八天,8师傅讲的很好,浅显易懂,经过4天的理论学习和4天的实操练习,经过十一假期的熟练,我在10…

2005-2021年全国及31省绿色信贷水平(含原始数据和测算过程)

1、时间:2005-2021年 2、范围:全国及31省市 4、内容说明:包含原始数据、计算结果、计算过程 5、来源:工业NJ、2018年经济普查、其中2017年缺失已采用插值法补齐 6、计算说明: 选取各省六大高耗能产业利息支出占工…

Unity3D:Project窗口

推荐:将 NSDT场景编辑器 加入你的3D工具链 3D工具集: NSDT简石数字孪生 Project 窗口 “项目”窗口显示与项目相关的所有文件,是您在应用程序中导航和查找资源和其他项目文件的主要方式。默认情况下,当您启动新项目时&#xff0c…