AJAX: 事件循环(举例细论)

allegro 约束管理Constraint Manager(一) 介绍Cadence allegro 约束管理器CM的使用方法。 阅读详情

概念:执行任务和收集异步任务,在调用栈空闲时,反复调用任务队列里回调函数的一种执行机制

原因:JavaScript 是单线程的,为了不阻塞 JS 引擎,设计执行代码的模型

JS内代码如何执行:

执行同步代码,遇到异步代码就交给宿主浏览器环境执行。异步有了结果之后,把回调函数放到任务队列中排队,当调用栈空闲后,反复调用任务队列里的回调函数

案例:

console.log(1)
setTimeout(() => {
  console.log(2)
}, 0)
console.log(3)
setTimeout(() => {
  console.log(4)
}, 2000)
console.log(5)

执行过程:

1-JS引擎把console.log(1)放入调用栈中,执行后弹出

2-JS引擎发现setTimeout(…, 0) 是异步代码,于是将它放入宿主环境(浏览器)中,执行setTimeout(…, 0),完成后放入任务队列中

3-JS引擎把console.log(3)放入调用栈中,执行后弹出

4-JS引擎发现setTimeout(…, 2000) 是异步代码,于是将它放入宿主环境(浏览器)中,执行setTimeout(…, 2000)要等待2s,完成后放入任务队列中

5-JS引擎把console.log(5)放入调用栈中,执行后弹出

6-此时,JS的调用栈空闲,调用任务队列中的回调函数,先调用setTimeout(…, 0)中的回调函数console.log(2) ,执行后出栈。此时,JS的调用栈再次空闲,它会保持监视任务队列情况。当2s到时,会调用setTimeout(…, 2000)中的回调函数console.log(4) ,执行后出栈。

参考:AJAX-Day04-07.事件循环_哔哩哔哩_bilibili

40、基于指令的GPU编程:OpenACC与OpenMP的深入解析 本文深入解析了两种基于指令的GPU编程模型——OpenACC和OpenMP。从编程复杂度、数据处理方式和性能表现等多个方面对两者进行了对比分析,并结合实际应用场景提供了选择建议。通过详细的代码示例和性能测试结果,帮助开发者更好地理解和应用这两种编程模型,以充分发挥GPU的并行计算能力。 阅读详情

相关推荐

Matlab2024a安装教程

点击【下一步】。8.选择解压后的【MATLAB R2024a(64bit)】文件夹中【Crack】文件夹下的【licese.lic】,点击【打开】。

qq_64359046的博客 4810

对JavaScript事件循环机制的理解

前言: 这次主要整理一下自己对 Js事件循环机制,同步,异步任务,宏任务,微任务的理解,大概率暂时还有些偏差或者错误。如果有,十分欢迎各位纠正我的错误! 一、事件循环和任务队列产生的原因: 首先,JS是单线程,这样设计也是具有合理性的,试想如果一边进行dom的删除,另一边又进行dom的添加,浏览器该如何处理? 引用: “单线程即任务是串行的,后一个任务需要等待前一个任务的执行,这就可能出现长时间的等待。但由于类似ajax网络请求、setTimeout时间延迟、DOM事件的用户交互等,这些任务并不消

OceanH的博客 9317

电容式麦克风:从原理到实际电路波形解析

本文深入解析电容式麦克风的工作原理,从核心的振膜与背板结构、电荷锁定机制到场效应管放大器的作用。通过实物拆解与等效电路分析,阐明声音振动如何转换为电压信号,并指导如何用示波器实测波形,直观展现声电转换过程,适合电子爱好者和音频技术学习者。

Black的专栏 1080

Ajax---EventLoop事件循环

JavaScript 是一门单线程执行的脚本语言。也就是说,同一时间只能做一件事情。JavaScript要运行在宿主环境中(浏览器,nodejs)下。浏览器内部有执行js代码的引擎.提示:以下是本篇文章正文内容,下面案例可供参考EventLoop事件循环: js是单线程的,一次只能做一件事。js在浏览器这个宿主环境中运行。浏览器是多线程的,用户交互,定时器,网络请求等等浏览器中的事件会产生对应的任务,任务多了要在任务队列中排队,浏览器的主线程依次取出任务来执行,此过程不断重复从而形成一个循环。

user_xx1的博客 537

Win11任务栏图标消失?快速恢复指南

任务栏图标消失是Windows 11操作系统中常见的问题之一,但通过上述方法,用户通常可以轻松解决这一问题。无论是重启Windows资源管理器、使用命令提示符修复、检查系统更新和设置,还是考虑重装系统,都可以帮助用户恢复任务栏图标的正常显示。希望本文的介绍能对用户有所帮助,让Windows 11的使用更加顺畅和愉快。

mmoo_python的博客 5410

浅谈天线 - - - GNSS/BT/4G/2.4G

全球定位导航系统,最成熟的就是美利坚,我大中华,俄罗斯,还有就是欧洲的一个(太次不谈)所以我们在项目调试的时候,小尺寸的陶瓷天线上一般兼容2个频段,体积大一点的可以兼容三个频段,采用组合的形式 GPS+BD GPS+GLONASS GLONASS+BD 或者是单频段的定位天线陶瓷PATC陶瓷片:陶瓷片面积越大,介电常数越大,其共振频率越高,接收效果越高,这就是为什么都推荐使用大一点的陶瓷天线的原因银层:陶瓷天线表面的银层可以影响天线的共振频率,理想的GNSS陶瓷片频点准确落在1575.42MH

BLACKHOLE6的博客 1万+

Ajax应用举例

Ajax应用举例 一.异步校验用户名 1.页面 2.html代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>用户注册</title> </head> <body> <div> ...

Levana1994的博客 493

仿真学习系列(四十二):Sigrity仿真之走线阻抗和耦合检查

在高速电路设计中,走线的阻抗和信号线之间的耦合是影响信号完整性的重要因素。设计中可能会出现多种情况,导致阻抗变化或不匹配,例如线宽的变化、跨层分割等。传统的人工检查方法常常不够高效且易忽视细节。借助仿真软件,可以快速定位问题区域,并进行精确分析,从而有效避免或减少信号反射和串扰带来的影响。

案例文章,高速信号 425

AJAX 04 回调函数地狱和 Promise 链式调用、async 和 await、事件循环

Ajax 同步代码和异步代码、回调函数地狱和 Promise 链式调用、async 和 await、事件循环-EventLoop、Promise.all 静态方法

yavlgloss的博客 1746

43、FMCW雷达高度计仿真

本文介绍了FMCW雷达高度计的波形级建模与仿真过程,重点模拟了着陆和倾斜两种飞行场景以评估其性能。通过结合高程数据和飞行轨迹构建雷达场景,使用自定义信号处理器分析IQ样本并估计高度。结果表明,该高度计在多数情况下满足性能要求,但也存在误差较大的点,提出了地面检测算法优化的潜在方向。

neovim7hacker的博客 135

【主题建模】一种基于深度学习的主题建模方法:BERTopic(理论篇)

在我的博客中已经写了很多关于主题建模的内容,当你准备了解 BERTopic 时,默认你已经知道了 LSA、pLSA、NFM、LDA 等传统的主题建模方法。关于主题建模的前置知识我在这里不做赘述,感兴趣的同学可以看看我前几篇博客。学习 BERTopic 需要一定的机器学习基础,让我们一起开始吧!

Data · Model · Agent · Repeat 9894

ajax的事件返回机制,异步I/O—事件循环机制

I/O简介1.I/O操作:内核在进行文件I/O操作时,通过文件描述符(fd:一个整数—应用程序和内核之间的凭证)进行管理,应用程序若需要进行I/O调用时,先打开文件描述符,然后根据其去实现文件的数据读写。以进程的读入为例:* 第一步:数据会先被拷贝到操作系统内核的缓冲区:等待所有数据都准备好或者一直在等待数据,有数据的时候将数据拷贝到系统内核;*第二步:将内核缓存中数据拷贝到用户进程缓冲区中;2....

weixin_36104594的博客 307

RK356x U-Boot研究所(命令篇)3.10 bidram与sysmem相关命令的作用

RK356x U-Boot研究所(命令篇)3.10 bidram与sysmem相关命令的作用

Systemcall名屋 623

js事件循环:event loop

js事件循环:event loop

weixin_52840426的博客 1276

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

举例说明ajax的应用,AJAX应用举例

当用户输入lixin时,显示“该用户名已存在”;输入其他内容是,显示“该用户名可以注册”.index.jsp://根据不同的浏览器创建不同的XMLHttpRequest对象function createXmlHttpRequest(){var xmlreq = false;if (window.XMLHttpRequest) {xmlreq = new XMLHttpRequest();} els...

weixin_36486277的博客 378

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

什么是事件循环 Eventloop

其实事件循环本身并不难,总结一下:(1)先执行主栈中的宏任务(同步代码),遇到setTimeout之类的宏任务就放进下个循环事件的宏任务列表中,遇见promise或者async await(其实就是对promise的封装)之类的微任务,就放进当前循环的微任务列表中。(2)宏任务执行完毕后,执行当前循环中的微任务。完成当前事件循环中的所有微任务后,当前事件循环结束。(3)开启下一轮循环后,重复上诉操作,注意每个setTimeout本身是一个宏任务,而非多个setTimeout为一个宏任务。

zrblue的博客 1147

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Node事件循环和浏览器事件循环

前端必备知识:node.js的事件循环以及浏览器中的事件循环

分享记录前端知识 1099

AJAX——事件循环(EventLoop)

1.什么是事件循环?执行代码和收集异步任务,在调用栈空闲时,反复调用任务队列里回调函数执行机制2.为什么有事件循环?JavaScript是单线程的,为了不阻塞JS引擎,设计执行代码的模型3.JavaScript内代码如何执行?执行同步代码,遇到异步代码交给宿主浏览器环境执行异步有了结果后,把回调函数放入任务队列排队当调用栈空闲后,反复调用任务队列里的回调函数。

weixin_48719464的博客 930

让你理解: 事件循环 eventloop

面试官问起事件循环, 不会回答? 我来让你知道什么是事件循环

hmxs_hmbb的博客 758

JavaScript中的事件循环&消息队列

title: JavaScript中的事件循环&消息队列 作为一门设计初衷为了处理浏览器网页交互(DOM操作、UI动画等)的语言,JavaScript只能被设计为单线程(否则多个线程同时处理DOM那将会造成混乱)。 可是写过JavaScript代码的人都用过定时器、ajax、事件绑定等。如果是单线程那岂不是无法完成这些异步请求? 一. 前言 其实,JavaScript单线程指的是浏览器...

qq_38722097的博客 2760

事件循环机制

javaScript事件循环进制是一个用于处理异步事件的回调函数的机制。是事件循环机制允许JavaScript在等待某些任务(异步任务:通常需要一定时间才能完成)完成的同时,可以执行其他任务,避免了阻塞,解决了单线程并发性的问题。javaScript是一个单线程,同一时间只能执行一件事情。这样单一的特性会导致JavaScript在处理长时间运行的操作的时候出现阻塞,阻塞主要还是异步任务的问题。

bu_xiang_tutou的博客 1293

面试官:说说你对JavaScript中事件循环的理解​

一、是什么JavaScript 在设计之初便是单线程,即指程序运行时,只有一个线程存在,同一时间只能做一件事为什么要这么设计,跟JavaScript的应用场景有关JavaScript 初期...

weixin_44475093的博客 1413

JavaScript 中的异步原理和事件循环机制

AJAX 线程负责发送请求,拿到响应后,把响应封装成一个 JavaScript 对象,然后构造一条消息 主线程在执行完当前循环中的所有代码后,就会到消息队列 为什么 JavaScript 是单线程 ? JavaScript是单线程,怎样实现异步操作 1. 消息队列 2. 事件循环 异步原理(AJAX异步实现流程) 事件循环 JavaScript 的单线程,与它的用途有关。作为浏览器脚本语言,JavaScript 的主要用途是与用户互动,以及操作 DOM。这决定了它只能是单线程,否则会带来很复杂的同步问题

康一夏忙中偷闲的日子 504

事件循环机制详解

浏览器环境下js引擎的事件循环机制 当javascript代码执行的时候会将不同的变量存于内存中的不同位置:堆(heap)和栈(stack)中来加以区分。其中,堆里存放着一些对象。而栈中则存放着一些基础类型变量以及对象的指针。 但是我们这里说的执行栈和上面这个栈的意义却有些不同。 我们知道,当我们调用一个方法的时候,js会生成一个与这个方法对应的执行环境(context),又叫执行上下文。这个执行环境中存在着这个方法的私有作用域,上层作用域的指向,方法的参数,这个作用域中定义的变量以及这个作用域的this对

lh134241的博客 324

JavaScript-事件循环

JS事件循、宏任务与微任务、netxtick

huiaixing的博客 2138

Jquery的ajax各个参数含义和应用举例

ajax各个参数含义 参数名 类型 描述 url String (默认: 当前页地址) 发送请求的地址。 type String (默认: “GET”) 请求方式 (“POST” 或 “GET”), 默认为 “GET”。注意:其它 HTTP 请求方法,如 PUT 和 DELETE 也可以使用,但仅部分浏览器支持。 timeout Number 设置请求超

逗号的博客 1863
上一篇: 从XHR、Promise到手动封装简易axios
下一篇: AJAX:宏任务与微任务
CaptainDrake
博客等级 码龄6年 5363粉丝 187原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值