JavaScript事件循环

JavaScript是单线程,(通常用来操作DOM,如果改为多线程,一个线程进行了1删除,另一个添加了DOM,那么浏览器该怎么处理)

JavaScript中,所有任务都可分为

同步任务:立即执行的任务,一般进入主线程中执行

异步任务:异步执行的任务,例如ajax网络请求,setTimeout定时器等,一般会先进入任务队列,主线程的任务执行完毕后,会去任务队列中读取对应的任务,推入到主进程中执行,上述过程的不断重复即为事件循环。

不过异步任务又可分为宏任务微任务

先看一个例子:

console.log(1)
​
setTimeout(()=>{console.log(2)
}, 0)
​
new Promise((resolve, reject)=>{console.log('new Promise')resolve()
}).then(()=>{console.log('then')
})
​
console.log(3)

任务队列先进先出,主线程中同步任务打印顺序应该是1->new Promise->3

然后应该是2->then

但真实情况其实是1->new Promise->3->then->2

这是因为微任务优先宏任务先执行

微任务

常见的微任务有

  • Promise.then

  • MutaionObserver

  • Object.observe(已废弃;Proxy 对象替代)

  • process.nextTick(Node.js) (Vue.js常常使用$nextTick()来调用nextTick,用于在dom更新后执行后一些操作)

宏任务

  • script (可以理解为外层同步代码)

  • setTimeout/setInterval

  • UI rendering/UI事件

  • postMessage、MessageChannel

  • setImmediate、I/O(Node.js)

async和await

JavaScript中用于处理异步操作的关键字,解决了回调函数地狱的问题

async 函数是一种特殊类型的函数,它会隐式地返回一个 Promise 对象。在 async 函数中,你可以使用 await 关键字来等待其他异步操作的完成,而不需要像使用 Promise 那样嵌套多层的 then 方法。

await 关键字只能在 async 函数内部使用,它用于暂停 async 函数的执行,直到等待的 Promise 对象状态变为 resolved(已完成)或 rejected(已拒绝)

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

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

相关文章

美易官方:道指六连阴!美国股债双杀背后

美国股市和债市近期遭遇了罕见的双重打击,道指连续六个交易日下跌,引发市场广泛关注。这一现象背后,是否又上演了某一“魔咒”?本文将从多个角度对此进行深入分析。 道指罕见创下六连阴、标普500指数迎来硅谷银行危机以来最大两日…

工作中用Redis最多的10种场景

作者:苏三说技术 链接:https://juejin.cn/post/7325132133168971813 前言 Redis是一种非常优秀的基于KV的键值对缓存数据库,有非常不错的性能和稳定性,无论是在工作中,还是在面试中,都经常会出现。因此&am…

村庄规划中基础地理数据的获取、处理与应用

文章目录 一、三调数据1. 地类图斑2. 村级调查区二、调查数据1. 宅基地确权数据2. 公益林数据三、公开数据1. 卫星影像2. 数字高程模型3. 国家地理信息服务平台4. 其他数据一、三调数据 三调数据,是对现状土地利用情况的全面调查。成果数据以数据库的形式存储、组织与管理。具…

UC网盘、迅雷网盘拉新如何做?热门拉新项目盘点

迅雷网盘拉新项目: ​关键词链接 双重拉新模式:可以通过链接、关键词两种方式进行推广,匹配不同拉新场景。 网盘功能齐全:作为老牌网盘产品,功能强大,使用体验好,支持不同格式文件。 不限推广…

【七 (2)FineBI FCP模拟试卷-平台新增用户留存分析】

目录 文章导航一、字段解释1、用户平台登录信息表格2、用户平台激活信息表格 二、需求三、操作步骤1、建立用户平台登录信息表格和用户平台激活信息表格的关联关系2、将用户平台激活信息表格的激活日期添加到用户平台登录信息表格3、新增公式列,计算激活时间和登录时…

OpenHarmony轻量系统开发【5】驱动之GPIO点灯

5.1点灯例程源码 先看最简单得LED灯闪烁操作 源码结构如下: 第一个BUILD.gn文件内容: static_library("led_demo") {sources ["led_demo.c"]include_dirs ["//utils/native/lite/include","//kernel/liteos_m/c…

工业物联网让“制造”变成“智造”!——青创智通

工业物联网解决方案-工业IOT-青创智通 随着科技的不断进步和工业的持续发展,物联网(IoT)技术的出现为制造业带来了前所未有的变革。工业物联网(IIoT)作为物联网技术在工业领域的应用,正在逐渐改变传统的制…

@Transactional使用中的三类坑

我们知道事务有声明式事务和编程式事务两种,编程式事务代码侵入较高,声明式事务侵入较低,在项目中常有使用,然而,不正确的使用声明式事务,可能让代码未能按照我们的预期执行。 一、事务可能没有生效 Tran…

概念:Android 虚拟机

Android中的Dalvik虚拟机(DVM)和Android运行时(ART)都是运行在内存中的。它们是Android操作系统的一部分,为Android应用提供了一个管理执行代码的环境。具体来说: Dalvik虚拟机 (DVM):Dalvik是…

2024-4.python4基本数据类型

基本数据类型 引言 提问 前面我们说过,计算机的本质作用就是用来存储和运算二进制的数据。但是在实际应用中,我们看到计算机存储或者运算的数据并非只有二进制的数据,例如使用Excel可以对一些数值数据、文本数据或者图像数据进行不同形式的处…

从iPhone恢复已删除照片的最佳软件

本文分享了从iPhone恢复已删除照片的最佳软件。如果您正在寻找如何从iPhone恢复已删除的照片,请查看这篇文章。 为什么您需要软件从iPhone恢复已删除的照片? 没有什么比丢失iPhone上的重要数据更痛苦的了,尤其是一些具有珍贵回忆的照片。有时…

从零开始学习深度强化学习及其在自动驾驶下的实战项目

深度强化学习及其在自动驾驶下的实战项目 本课程是为了帮助大家快速入门强化学习和学会应用深度强化学习进行算法的开发。 鉴于网上有许多开源的强化学习理论基础的视频,而且许多项目都是基于gym游戏进行开发的简单项目,并未涉及使用前沿的carla环境等自…

公司文件加密软件有监视功能吗?

公司文件加密软件不仅提供了强大的文件加密能力,还具备了监视功能,确保文件在使用过程中的安全性。华企盾DSC数据防泄密系统中的监控功能体现在以下几个方面: 加密文件操作日志:记录所有加密文件的申请、审批、扫描加解密、自动备…

Jvm垃圾回收器cms和g1区别

Jvm垃圾回收器cms和g1区别 G1垃圾回收器(Garbage First)和CMS (Concurrent Mark-Sweep)垃圾回收器是Java虚拟机(JVM))中的两种不同的垃圾回收策略,它们各有优缺点。以下是两者的比较…

【Camera2 教程二】Camera2相机打开和关闭接口调用详细说明

上一章《Camera2教程一》里我们介绍了一些 Camera2 的基础知识,但是并没有涉及太多的 API,从本章开始我们会开发一个具有完整相机功能的应用程序,并且将相机知识分成多个篇章进行介绍,而本章所要介绍的就是相机的开启流程。 阅读本章之后,你将学会以下几个知识点: 如何…

C#值传递和引用传递,ref和out关键字,装箱和拆箱

C#值传递和引用传递 1.值传递和引用传递 值传递:值传递时,系统首先为被调用方法的形参分配内存空间,并将实参的值按位置一一对应复制给形参,被调用方法中形参得任何改变都不会影响到相应的实参。 引用传递时:系统不是…

【学习笔记十】EWM自动产品包装配置

一、确定包装物料建议的程序 1.定义内向交货处理的凭证类型 2.确定包装物料建议的程序确定原理 使用可以确定包装材料建议的过程来指定业务代码。系统使用这些业务代码查找包装规格。包装期间,系统可建议包装材料。如果系统确定包装规格并建议包装材料,…

Suno AI

Suno is the latest big name in AI, but what is it? Keep reading to learn everything you need to know about Suno AI, including what it is, what it can do, and how much it costs. Suno AI是一款由Anthropic公司开发的人工智能音乐生成器,它利用先进…

Gradle 构建自动化工具入门

🏷️个人主页:牵着猫散步的鼠鼠 🏷️系列专栏:Java全栈-专栏 🏷️个人学习笔记,若有缺误,欢迎评论区指正 目录 1. 前言 2. 简介 3. 常见的项目构建工具 4. 安装 4.1. 安装说明 4.2. 下载…

[管理者与领导者-167] :团队管理 - 高效执行力 -6-授权-领导者做个统筹调度的领导者,而不是做冲锋陷阵的士兵

目录 关键词: 前言: 一、管理者做自己该做的事,下属做下属该做的事 二、科学分配任务和职责 三、只有信任员工,才能有效授权 四、授权管头(定目标)管尾(把结果),但…