关于js单线程,事件循环,微任务宏任务

javascript 同步任务、异步任务,单线程、多线程,执行栈、任务队列、任务队列的维护,宏任务、微任务,事件循环。 原文连接:https://blog.youkuaiyun.com/weixin_39788986/article/details/110130711 原文连接:https://blog.youkuaiyun.com/terrychinaz/article/details/112425039 阅读详情

众所周知,javascript是一门单线程\异步、非阻塞、解释型脚本语言。所谓单线程,就是当上一句代码没执行完时,下一句代码不会执行。 所以当在页面中需要请求数据时,如果数据都是以单线程的形式请求,会造成上面的数据没有请求到时,下面的数据也不会发送请求,造成很卡的现象。
解决这个问题我们可以将请求代码写成异步请求的格式(ajax,axios);

虽然js引擎只维护一个主线程用来解释执行JS代码,但实际上浏览器环境中还存在其他的线程,例如处理AJAX,DOM,定时器等,我们可以称他们为工作线程。同时浏览器中还维护了一个消息队列,主线程会将执行过程中遇到的异步请求发送给这个消息队列,等到主线程空闲时再来执行消息队列中的任务。

同步任务的缺点是阻塞,异步任务的缺点是会使代码执行顺序难以判断。两者比较一下我们还是更倾向于后者。所以这里写个例子对时间循环做下总结。

console.log('start')
Promise((resovle,reject)=>{
	console.log('1')
}).then(()=>{
		setTimeout(() => {
  			console.log('2')
		},0)
		console.log('3')
})
console.log('4')
setTimeout(() => {
  console.log('5')
},0)
console.log('end')
// 这段代码的执行顺序为
start ,1 , 4 ,end , 3 , 5 , 2

做下解释,因为Promise 本身为同步操作,一旦调用直接执行,而then方法调用的回调函数为微任务,所以会暂存到微任务队列中。setTimeout也为异步,但setTimeout为宏任务放入宏任务队列,在执行异步队列时,首先执行微任务中then的回调,又遇见了setTimeout宏任务再放入宏任务队列,等所有微任务执行完毕时,执行宏任务。

27、VXLAN BGP EVPN网络的自动化部署与运维管理 本文深入探讨了VXLAN BGP EVPN网络从初始配置到运维管理的全生命周期自动化流程,涵盖Day-0设备自动上线、Day-0.5增量变更与连接验证、Day-1覆盖服务配置与计算集成,以及Day-2监控与故障排查。详细介绍了推送与拉取两种配置模型、主流工具如Cisco VTS、NFM、DCNM的功能特点,以及开源自动化工具的应用。通过流程图和命令示例,系统展示了MAC/IP学习、BGP通告和VXLAN封装的验证方法,为构建高效、可扩展的数据中心网络提供了全面的技术指导。 阅读详情

相关推荐

AD9361 RSSI配置实战:从寄存器到精准功率测量的避坑指南

本文详细解析了AD9361芯片的RSSI配置实战,从寄存器设置到精准功率测量的全流程避坑指南。通过优化模式选择、测量持续时间及高级参数配置,实现高精度信号强度测量,并分享实际项目中的校准流程与性能优化技巧,帮助工程师提升射频接收链路的测量精度。

weixin_38166557的博客 447

js单线程,事件循环,微任务宏任务

JS单线程 概念:一个程序一个程序中只可以执行一个任务 为什么js是单线程 单线程是只指同一时间只能做一件事,js的单线程与它的用途有关,js的主要作用域用户互动以及操作DOM,这决定了它只能是单线程,否则会带来很复杂的同步问题;如:js同时有两个线程,一个线程在某个DOM节点添加内容,另一个线程删除了这个节点,这时浏览器应该以哪个线程为准? 为了利用多核CPU的计算能力,HTML5提出Web Worker标准,允许JavaScript脚本创建多个线程,但是子线程完全受主线程控制,且不得操作DOM。所以,这

weixin_47735395的博客 175

Mamba与iTransformer融合:时间序列预测中的曼巴注意力机制创新实践

本文探讨了Mamba与iTransformer融合在时间序列预测中的创新实践,重点介绍了曼巴注意力机制的设计与优势。通过双路径信息流设计,该方案在保持O(n)复杂度的同时,显著提升了预测精度和训练效率。实验证明,混合架构在电力负荷、气象数据等多变量长序列场景中表现优异,预测误差降低至0.083,内存占用仅4.2GB。

weixin_29292535的博客 219

JavaScript 执行机制彻底吃透!单线程 / 事件循环 / 宏微任务核心原理 + 实战解析

JavaScript 执行机制是前端核心基础,也是面试高频考点,其核心是单线程事件循环 (Event Loop),很多人会疑惑「事件循环没加快执行速度,意义何在?」,本文从核心原理到实战案例,彻底讲透 JS 执行机制,帮你理清所有疑惑。script先同步,再微任务,最后宏任务,微任务优先于宏任务执行。单线程,事件循环是单线程的「异步调度器」;任务分类:同步任务 + 异步任务(微任务优先级 > 宏任务);执行载体:调用栈(同步)、任务队列(异步暂存);

七叔的博客 632

fastbin attack快速入门

0x01 fastbin简介 Fastbin包含0x20~0x80大小bin的数组指针,用于快速分配小堆块。fastbin按照单链表结构进行组织,相同大小的bin在同一个链表中,fd指向下一个bin,采用LIFO(Last In First Out)机制。在fastbin中,堆块的inuse标志都为1,处于占用状态,防止chunk释放时进行合并,加快小堆块的分配。 正常fastbin的使用 通过这个简单的案例来了解fastbin的单链表结构,malloc和free的过程。 #include<stdio

abelxu 1571

Kill5.37版本下,使用ARMcomplier6编译__asm 函数报错的问题

Kill5-5.37版本下,使用ARMcomplier6编译__asm 函数报错的问题 问题简要描述: 昨日更新了keil5软件的版本,从5.17更新到了5.37版本,然后编译STM32项目文件时,软件提示编译报错。报错问题如下: Build started: Project: QKsoftware *** Using Compiler 'V6.18', folder: 'E:\MDK-ARM\ARM\ARM\ARMCLANG\Bin' Build target 'QKsoftware' compiling

weixin_43644424的博客 1万+

js单线程与事件循环,同步与异步,宏任务与微任务

1.js是单线程的 单线程是什么 同一个事件只能做同一件事情,下一件事情需要等待上一件事执行完毕 为什么js是单线程? js作为浏览器脚本语言,用途是与用户互动,假定JavaScript同时有两个线程,一个线程在某个DOM节点上添加内容,另一个线程删除了这个节点,这时浏览器应该以哪个线程为准?单线程可以避免复杂性 单线程带来的问题和局限性 js是单线程语言,浏览器只分配给js一个主线程,用来执行任务(函数),但一次只能执行一个任务,这些任务形成一个任务队列排队等候执行,但前端的某些任务是非常耗时的,比如网

darabiuz的博客 930

自动驾驶开发者必看:nuscenes数据集23类物体标注全解析(附避坑指南)

本文深入解析nuscenes数据集的23类物体标注系统,为自动驾驶开发者提供全面的标注规范解读和实战避坑指南。涵盖多模态数据组织、类别细分规则、属性系统应用技巧以及标注质量验证方法,帮助开发者高效利用这一标杆数据集提升模型性能。

weixin_29041767的博客 257

js单线程,事件循环,微任务宏任务。

什么是宏任务和微任务? 宏任务包括:setTimeout setInterval Ajax DOM事件 微任务:Promise async/await 微任务比宏任务的执行时间要早。 异步和单线程: 异步和单线程是相辅相成的,js是一门单线程脚本语言,所以需要异步来辅助。 异步和同步的区别: 异步不会阻塞程序的执行, 同步会阻塞程序的执行。 前端使用异步的场景: 定时任务:setTimeout,setInverval 网络请求:ajax请求,动态加载 事件绑定 事件循环: 1)所有的同步任务都在主线程上执

weixin_49725109的博客 152

VxWorks系列 快速导航

Vxworks系列快速阅览导航

Mr.Sugarcane 1309

RTCA DO-160G标准详解:航空电子设备的全面环境适应性测试指南

第二章的主要目的是提供标准中使用的术语和定义。了解这些术语对于准确理解标准的要求至关重要,特别是在技术实施过程中。RTCA DO-160G 涉及多个学科的知识,包括航空、电子、电磁学和机械工程,因此需要确保使用的术语在所有学科中具有一致的定义。为了确保测试人员和工程师在执行测试时对所有条件和要求的理解一致,RTCA DO-160G 标准中定义了大量术语。环境应力:指的是设备在操作过程中可能遇到的外部物理或化学条件,包括温度、湿度、振动等。电磁干扰(EMI)

qq_41854911的博客 5277

js单线程及事件循环、宏任务和微任务

js单线程及事件循环机制、宏任务与微任务

weixin_46051260的博客 260

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

nodejs事件循环与多进程(一)——事件循环允许Node.js执行非阻塞IO操作 & js是操作DOM,决定了单线程 & 事件循环之宏任务setTimeout在后、微任务promise在前

了解事件循环的概念学习浏览器中的事件循环机制学习nodejs中的事件循环机制了解多进程,多线程之间的区别学习nodejs中的多进程并使用cluster来开启多进程为了协调事件(event),用户交互(user interaction),脚本(script),渲染(rendering),网络(networking)等,用户代理(user agent)必须使用事件循环(event loops)。事件:PostMessage, MutationObserver等。

weixin_44867717的博客 432

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

彻底弄懂 JavaScript 执行机制,同步任务、异步任务、微任务、宏任务、事件轮询

用我的理解,帮助大家弄懂 js 的执行机制 在此之前,我对 js 的执行机制根本都不了解,按我的想法就是从上到下一行一行执行,对 setTimeOut 等定时器的执行机制也漠不关心,反正能执行就行,知道我最近在学习 promise 才了解到 js 的执行机制,下面我就用我的理解来简单介绍下。 ...

alokka的博客 7950

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

js的宏任务和微任务有哪些?怎样的执行的?

Javascript 的执行顺序,众所周知是按照顺序自上而下执行。 Javascript任务分**为同步任务和异步任务**,**异步任务又分为宏任务和微任务**,其中异步任务属于耗时的任务。

随时发疯! 1107

理解JS的事件循环机制(Event Loop)

JS是单线程语言,但是又可以做到异步处理高并发请求,这时就用到了JavaScript的事件循环机制。

铁锤妹妹的博客 7495

彻底理解js是单线程的

js单线程、宏任务 微任务

xm1037782843的博客 2659

js为什么是单线程?

js为什么是单线程? 假设javascript有两个线程,一个在某个DOM节点添加内容,另一个线程在这个节点上删除内容,这是浏览器应该以哪个线程为准? 这就意味着单线程作为javascript的核心标准,将一直沿用下去。 JS为什么需要异步? 既然js是单线程,那么意味着,当先我们执行一个任务,什么事都干不了,只能等待他执行完。如果执行的任务需要等待很长的时间,对于用户而言阻塞就意味着"卡死",这样就导致了很差的用户体验 JS单线程又是如何实现异步的呢? 是通过的js事件循环(event loop) JS中

positive_qrq的博客 1764

Js的单线程?安全吗,然后js的事件循环机制是怎么样子的?然后Js的宏任务,微任务??任务队列

JS 就像一个。

zhurenjin的博客 210
上一篇: 关于原生js事件
下一篇: Ajax
is_monkey1
博客等级 码龄6年 15粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值