当前位置: 首页 > news >正文

出版社类网站模板徐州关键词优化排名

出版社类网站模板,徐州关键词优化排名,什么网站专做衣服,wordpress 主题 更新JavaScript 任务队列详解:Event Loop、宏任务与微任务 在 JavaScript 的世界里,异步编程是一个至关重要的概念。JavaScript 采用 单线程 运行方式,但能够处理异步任务,这一切都要归功于 事件循环(Event Loop&#xff…

JavaScript 任务队列详解:Event Loop、宏任务与微任务

在 JavaScript 的世界里,异步编程是一个至关重要的概念。JavaScript 采用 单线程 运行方式,但能够处理异步任务,这一切都要归功于 事件循环(Event Loop) 机制。本文将深入剖析 JavaScript 的 任务队列(Task Queue),包括 宏任务(Macrotask)微任务(Microtask),并结合示例解析代码的执行顺序。
在这里插入图片描述


1. 事件循环(Event Loop)

Event Loop 是 JavaScript 运行时的核心机制,负责调度 同步任务异步任务

执行顺序:

  1. 执行 同步代码(同步代码会直接进入调用栈 Call Stack 运行)。
  2. 执行 微任务队列(Microtask Queue) 里的所有任务。
  3. 执行 宏任务队列(Macrotask Queue) 里的一个任务。
  4. 回到 第 2 步,检查是否有新的 微任务,如果有,则执行所有微任务。
  5. 循环往复,直到所有任务执行完成。

2. Web APIs 与异步任务

在 JavaScript 代码执行过程中,遇到 异步任务(如 setTimeoutPromisefetch 请求等)时,并不会阻塞主线程,而是将其交给 Web APIs 处理。等任务完成后,相应的回调函数会被放入 任务队列,等待执行。

常见的 Web APIs 任务:

  • 定时器setTimeoutsetInterval
  • 网络请求fetchXMLHttpRequest
  • DOM 事件clickmousemove
  • I/O 操作(Node.js)

这些任务完成后,会按照一定的优先级放入 任务队列,由 事件循环 调度执行。


3. 宏任务(Macrotask) vs. 微任务(Microtask)

JavaScript 的 任务队列 分为 宏任务队列微任务队列,它们的主要区别如下:

3.1 宏任务(Macrotask)

  • 宏任务(Macrotask) 是相对 微任务(Microtask) 而言的较大单位任务。
  • 常见的宏任务包括:
    • setTimeout
    • setInterval
    • setImmediate(Node.js)
    • requestAnimationFrame
    • I/O 操作(如 fs.readFile
    • 事件回调(如 clickmousemove
  • 执行顺序: 每次执行一个 宏任务 之后,会立即执行 所有微任务

3.2 微任务(Microtask)

  • 微任务(Microtask) 是比宏任务优先级更高的异步任务。
  • 常见的微任务包括:
    • Promise.then
    • MutationObserver
    • queueMicrotask
    • process.nextTick(Node.js 专有)
  • 执行顺序: 每次执行完同步代码或宏任务后,都会立即执行 所有 微任务。

4. 执行顺序示例解析

来看一个经典的示例,分析 JavaScript 任务队列的执行顺序:

console.log("script start");setTimeout(() => {console.log("setTimeout");
}, 0);Promise.resolve().then(() => {console.log("promise1");
}).then(() => {console.log("promise2");
});console.log("script end");

执行流程解析

  1. 同步代码 依次执行:
    • console.log("script start")
    • console.log("script end")
  2. ``** 回调** 进入 宏任务队列
  3. ``** 回调** 进入 微任务队列
  4. 同步代码执行完毕后,执行微任务队列
    • console.log("promise1")
    • console.log("promise2")
  5. 执行宏任务队列
    • console.log("setTimeout")

最终输出结果

script start
script end
promise1
promise2
setTimeout

5. 另一个复杂案例解析

console.log("A");setTimeout(() => {console.log("B");
}, 0);Promise.resolve().then(() => {console.log("C");return Promise.resolve("D");
}).then((msg) => {console.log(msg);
});console.log("E");

执行流程

  1. 同步代码执行: AE
  2. ``** 进入宏任务队列**
  3. ``** 进入微任务队列**
  4. 执行微任务
    • C
    • D
  5. 执行宏任务
    • B

最终输出结果

A
E
C
D
B

6. 总结

Event Loop 执行顺序

  1. 执行同步代码(主线程上的任务)。
  2. 执行所有微任务(Microtask Queue)。
  3. 执行一个宏任务(Macrotask Queue)。
  4. 回到步骤 2,执行所有新的微任务。
  5. 继续执行宏任务队列中的下一个任务。

优先级对比

  • 微任务 > 宏任务(微任务会在每个宏任务前全部执行完)。
  • 多个微任务 会按照添加顺序执行。
  • 多个宏任务 也是按照添加顺序执行。

掌握 事件循环(Event Loop) 的工作原理,有助于优化 JavaScript 代码的执行流程,避免常见的异步问题,提高程序的执行效率。


希望这篇文章能帮助你更好地理解 JavaScript 的 任务队列机制

http://www.skylitedrivein.com/news/155.html

相关文章:

  • 一起做网站逛市场百度指数有哪些功能
  • 在哪个网站可以做图文合并代运营网店公司
  • 外链优化方法seo排名优化软件
  • 甘肃网站建设公司电话关键词优化排名seo
  • 做行程好的网站黑帽seo之搜索引擎
  • 确定网站建设的目的太原网站制作优化seo公司
  • 餐饮设计装饰公司淘宝seo排名优化
  • 杭州酒店网站设计公司推荐广告推广方式有哪几种
  • 做门图网站个人优秀网页设计
  • 个人网页设计作品模板代码怎么写简述如何优化网站的方法
  • 简易广州网站建设精准拓客软件哪个好
  • 湛江网站建设低价推荐5151app是交友软件么
  • 帮别人做网站哪里可以接单图片识别 在线识图
  • 怎么给网站图片加alt网站优化外包公司
  • 用cn作网站行么seo单页快速排名
  • 建一个网站大概需要多长时间网站注册时间查询
  • 黄色网站开发会品牌型网站设计推荐
  • 上线了网站网站推广的营销策划方案
  • 做网站网址深圳搜索引擎优化seo
  • 广州动态网站开发电脑网络优化软件
  • 如何将网站变成免费体验式营销经典案例
  • 国务院建设主管部门网站优势的seo网站优化排名
  • 如何做电子书网站外贸营销策略都有哪些
  • 做网站用什么插件郑州计算机培训机构哪个最好
  • dreamweaver做网站教学网站模板设计
  • 婚恋网站上认识人 带你做原油交易网站seo优化是什么
  • 个人网站页脚设计线上推广渠道主要有哪些
  • 做燕鲍翅的网站seo难不难
  • 企业建站一条龙百度联盟广告
  • 定远建设局网站盘多多百度网盘搜索引擎