js事件循环机制

JavaScript事件循环机制 这些概念对于理解 JavaScript 的异步执行至关重要!JavaScript 是。 阅读详情

什么是事件循环机制

  • js是单线程,防止代码阻塞,我们把代码分为:同步和异步
  • 同步代码给js引擎执行,异步代码交给宿主环境
  • 同步代码放入执行栈中,异步代码等待时机成熟送入任务队列排队
  • 执行栈执行完毕,会去任务队列看是否有异步任务,有就送到执行栈执行,反复循环查看执行,这个过程是事件循环

宏任务,微任务

js将异步任务分为了宏任务和微任务

微任务
  • nextTick()
  • promise.then() catch() {Promise本身是同步的,then/catch的回调函数是异步的}
  • async/await {await会等右边执行完毕后再执行下面的代码}
  • object.observe等
宏任务
  • script(代码块)
  • 定时器
  • I/O等

执行顺序过程如下

同步代码 ——>微任务队列——>宏任务队列

事件循环机制常见面试题

在这里插入图片描述
输出结果:3,2,1

在这里插入图片描述
输出结果是:11,14,12,15,13
在这里插入图片描述
输出结果是:2,3,6,p2,p1,1,4,5,setTimeout2,setTimeout1
在这里插入图片描述
输出结果:script start,async1 start,async2,async1 end,setTimeout

推荐一个网站可以看执行过程

jsv9000.app

GD32单片机开发环境搭建(Keil5安装) 1.安装MDK5 由于GD32 Keil 版本例程的工程是基于Keil MDK-ARM 5.25 uVision5 创建的,所以我在此也安装MDK5.25版本。 下载链接:https://pan.baidu.com/s/1E4tcDQvsVl0xezU3pEyJTA 提取码:s1fr 其他版本下载链接:https://cloud.tencent.com/developer/article/1605195 选择安装路径(不要装到中文路径下,避免不必要的麻烦): 用户信息随便... 阅读详情

相关推荐

Meta-RL之Meta-Gradient Reinforcement Learning

这篇文章是用元学习算法去学习RL的超参数η={γ,λ}\eta=\{\gamma,\lambda\}η={γ,λ}。当然不仅限于这2个超参数,还可以是和回报相关的超参数。 本文的核心思想:我们之前接触过Meta-Learning参数的初始化(MAML、Reptile)以及Meta-Learning参数的更新优化(L2L-by-gd-by-gd、Opt as a model for few-shot learning),那么这篇就是能否Meta-Learning到η={γ,λ}\eta=\{\gamma,\l

Ton的博客 2520

[005]JS专研系列 | 宏任务&微任务面试题

目录 1、概念 2、面试题 2.1 2.2 2.3 2.4 3、资源福利 1、概念 宏任务:DOM事件回调、Ajax回调、定时器回调 微任务:Promise回调、Mutation回调 宏任务需要在所有微任务执行完之后再去执行 顺序:同步队列=>微任务=>宏任务 2、面试题 2.1 setTimeout(()=>{ console.log(1)...

GC怪兽的Blog 1358

从命令到对话:LLM如何重塑车载语音交互与软件定义汽车体验

自动语音识别和自然语言处理是智能交互的核心基础技术,它们使机器能够理解和响应人类语音指令。其原理在于通过声学模型和语言模型将声音信号转化为文本,再解析文本背后的用户意图。这项技术的价值在于提供了一种自然、高效且能解放双手的人机交互方式,极大地提升了在特定场景(如驾驶)下的安全性与便利性。随着技术演进,其应用场景已从简单的命令控制扩展到复杂的多轮对话和跨域任务执行。当前,软件定义汽车的架构变革为车载语音提供了统一的控制平台,而大型语言模型的引入则带来了范式革命,使其从功能触发器进化为真正的智能任务执行者。本文

weixin_42669344的博客 563

Javascript中的事件循环机制详解

事件循环负责执行代码、收集和处理事件以及执行队列中的子任务。JavaScript中的事件循环是一种异步执行机制,作用是协调和管理各种异步任务的执行顺序,以确保JavaScript代码执行的顺序和预期一致。代码在执行时会先执行同步任务,而异步任务则被放入任务队列中等待执行。事件的循环机制会不断地检查任务队列中是否有任务需要执行,如果有,则将任务取出并执行。在执行异步任务时,引擎会挂起当前任务的执行,去执行异步任务,等到异步任务执行完成后,再回到之前的任务继续执行。

Dreamweaver_Bob的博客 5048

Android13 AudioFlinger混音流程全解析:从prepareTracks_l到threadLoop_write的底层实现

本文深入解析Android13 AudioFlinger混音流程,从prepareTracks_l到threadLoop_write的底层实现。详细剖析MixerThread的核心工作循环,包括音轨预处理、混音算法执行及硬件写入机制,帮助开发者优化音频性能并处理多音轨场景。

tea88的博客 1130

[ROS] rviz 可视化工具

[ROS] rviz 可视化工具 摄像头没讲 文章目录[ROS] rviz 可视化工具1. todo2. todo*. 参考*. 问题解决*. rough 1. todo 2. todo *. 参考 *. 问题解决 *. rough roscore + rviz

weixin_37834269的博客 2049

【面试题】宏任务和微任务

本文介绍了什么是宏任务,什么是微任务,以及宏任务、微任务和DOM渲染之间的关系,并从event loop的角度解释了宏任务和微任务执行次序的原理。

zx1041561837的博客 4968

【IoT】压力式电子脉搏器设计

智能硬件

产品线负责人 1619

JS JavaScript事件循环机制

JS JavaScript事件循环机制 首先区分进程和线程 进程是cpu资源分配的最小单位(系统会给它分配内存) 不同的进程之间是可以同学的,如管道、FIFO(命名管道)、消息队列 一个进程里有单个或多个线程 浏览器是多进程的,因为系统给它的进程分配了资源(cpu、内存)(打开Chrome会有一个主进程,每打开一个Tab页就有一个独立的进程) 浏览器的渲染进程是多线程的 GUI渲染线程 JS...

weixin_40659167的博客 196

华为OD机试 - 文件存储系统的排序 - 深度优先搜索dfs(Java 双机位C卷 200分)

华为OD机试 双机位C卷题库疯狂收录中,刷题。

学Java,找哪吒 719

【GameFramework框架】一、框架介绍

这是GameFramework框架教程的第一篇,但是博主不准备直接就讲GameFramework框架。【GameFramework框架】二、GameFramework框架介绍了。框架(Framework)通常被理解为一种基础要素的集合,它们用于承载系统的必要功能。约束性:框架定义了解决特定问题的边界,并将相关的软件组件约束在这个范围内,以保持框架的内聚性和解决问题的专注性。支撑性:框架本身不直接解决问题,而是提供一个基础的支撑结构,使得在其上构建的解决方案更为灵活和高效。

优快云博客专家,Unity3D高级软件工程师,《Unity 3D从入门到实战》作者。 1万+

【JavaScript】JS执行机制及事件循环详解

JavaScript 是一种单线程语言,即它在同一时间只能执行一个任务。与多线程语言不同,JavaScript 的执行环境(如浏览器或 Node.js)只有一个主线程用来处理所有任务。这个单线程模型决定了 JavaScript 无法同时处理多个任务,因此需要通过某种机制来处理耗时操作而不阻塞其他任务的执行。JavaScript 的执行机制及事件循环是其处理异步任务的核心。通过理解单线程模型、同步与异步任务、事件循环、宏任务与微任务的执行顺序,开发者可以更高效地编写异步代码,从而提升应用性能与用户体验。

lph159的博客 1244

基于Simulink建模仿真的滑模控制的磁悬浮轴承稳定控制仿真

磁悬浮轴承(Magnetic Bearing)利用电磁力来支撑和定位转子,无需机械接触,因此在高速旋转设备中具有广泛应用。滑模控制(Sliding Mode Control, SMC)是一种鲁棒性强的非线性控制方法,适用于磁悬浮轴承的精确控制。以下是基于Simulink的磁悬浮轴承滑模控制系统的详细设计与仿真步骤。通过上述步骤,设计并实现了基于 Simulink 和 Control System Toolbox 的磁悬浮轴承滑模控制系统。

MHD0815的博客 778

JavaScript中的事件循环机制:你不得不懂的JS原理

事件循环 学过JS的都知道,JS是单线程的,即使html5中提出了woker,但它依旧在主线程的控制之下,只能进行计算任务,而不能操作dom等,所以worker并没有改变JS是一个单线程这一机制。单线程即是后一个任务必须要等待前一个任务执行完毕才能执行,如果执行像setTimeout延迟器,亦或者异步任务等,都不会消耗cpu,就会有空等的情况,为了更好的协调事件、脚本、UI渲染等行为,于是有了事件...

漫漫前端路,进一寸有进一寸的欢喜 1277

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

JavaScript | 事件循环机制

JavaScript 是一种单线程语言,依赖于 事件循环机制 (简称 Event Loop),完成对同步和异步任务的处理,从而实现非阻塞并发。这里将从基础概念到实际例子,进一步解释事件循环的运作机制。

2502_90366796的博客 1342

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

面试必会js事件循环机制( JavaScript事件循环机制详解与面试输出题分析)

JavaScript事件循环机制是理解异步编程的关键。JavaScript是单线程语言,通过事件循环协调异步任务的执行。任务分为同步任务和异步任务,异步任务又细分为宏任务(如setTimeout)和微任务(如Promise.then)。事件循环的执行流程是:先执行同步任务,然后每轮循环清空微任务队列,再执行一个宏任务,直至所有队列清空。在做输出题时,建议用纸笔列出输出栈、宏任务和微任务,模拟出入队列以避免心算出错。通过分析示例代码,可以更好地掌握事件循环的执行顺序和任务调度。

weixin_72680176的博客 1087

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

JS的运行机制——事件循环机制

JavaScript作为单线程语言,其异步处理能力源于浏览器的事件循环机制。浏览器采用多进程架构,其中渲染进程的主线程负责运行JavaScript,同时处理页面渲染和事件响应。为避免阻塞,JavaScript将异步任务(如定时器、网络请求)交由其他线程处理,完成后回调函数被放入任务队列。事件循环不断从队列中取出任务执行,优先处理微任务。这种机制使JavaScript既能单线程运行,又能高效处理并发操作,但同时也带来计时器精度受限、脚本执行会阻塞渲染等特性。理解这些机制对优化Web应用性能至关重要。

不会后端的前端不是一个好全栈 2804

JS的事件循环机制

JS的事件循环机制 事件执行的顺序 当事件开始时,首先会进入JS主线程机制,由于JS属于单线程机制,因此存在多个任务的时候会存在等待的情况,先等待最先进入线程的事件处理完毕 这样就会出现等待的情况,如果之前的事件没有执行完成,后面的事件就会一直等待 但是类似于AJAX和setTimeout , setInterval 等待的事件,就出现了异步处理 通过将异步的事件交给异步模块处理,主线程就会去并行的处理后面的事件 当主线程空闲的时候,异步处理完成,主线程就会读取异步处理返回的callba

小火车况且况且况且的博客 1214

JS事件循环机制

JS事件循环

weixin_51445423的博客 1万+

【JS】javascript事件循环机制:你以为的异步王者,其实是面试刺客

本文深入解析JavaScript事件循环机制,强调其核心为调用栈、任务队列与事件循环的协同工作。文章对比微任务(如Promise)与宏任务(如setTimeout)的优先级,指出微任务总先于宏任务执行。

JavaDog程序狗 1052

详解:JavaScript事件循环机制(event loop), js运行机制(执行顺序)

Event Loop(事件循环)是 JavaScript 的执行机制(执行顺序)

qq_47230378的博客 2020

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

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

铁锤妹妹的博客 7494

【javascript】Js 的事件循环(Event Loop)机制

大家都知道js是单线程的脚本语言,在同一时间,只能做同一件事,为了协调事件、用户交互、脚本、UI渲染和网络处理等行为,防止主线程阻塞,Event Loop方案应运而生…

GuoguoDad的博客 493

JavaScript 事件循环(Event Loop)机制详解

JavaScript通过事件循环机制实现单线程下的异步执行。核心执行顺序为:同步代码 > 微任务(Promise等) > 宏任务(setTimeout等)。每个宏任务执行后都会检查并清空微任务队列。async/await本质是Promise语法糖,await后的代码会作为微任务。Node.js的事件循环更复杂,包含6个阶段。

qq_44919431的博客 1803
上一篇: 几种时间格式详解及互相转换(js)
下一篇: js节流和防抖面试时应该怎么说
今天你写算法了吗
博客等级 码龄6年 84粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值