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

网站开发与软件销售广东省建设安全监督站的网站

网站开发与软件销售,广东省建设安全监督站的网站,站酷app,wordpress分类目录描述目录 简介微任务与宏任务的基本概念宏任务(Macrotasks)微任务(Microtasks)宏任务示例微任务示例微任务与宏任务的执行时序 结论 简介 在JavaScript的异步编程中,理解事件循环(Event Loop)是至关…

目录

    • 简介
    • 微任务与宏任务的基本概念
      • 宏任务(Macrotasks)
      • 微任务(Microtasks)
      • 宏任务示例
      • 微任务示例
      • 微任务与宏任务的执行时序
    • 结论

简介

在JavaScript的异步编程中,理解事件循环(Event Loop)是至关重要的。事件循环机制确保了JavaScript的单线程能够处理高并发的异步任务。
微任务(Microtasks)宏任务(Macrotasks)是事件循环中的两种主要任务类型。
本文将介绍这两种任务的区别,并通过代码示例深入探讨它们的工作机制,帮助您掌握前端异步编程的核心概念。

在这里插入图片描述

微任务与宏任务的基本概念

JavaScript的事件循环由任务队列组成,任务队列分为两种:微任务队列和宏任务队列每个宏任务执行完毕后,JavaScript引擎会先执行所有微任务队列中的任务,然后再执行下一个宏任务。

宏任务(Macrotasks)

宏任务通常指的是那些会在事件循环的单独迭代中执行的任务,它们包括:

  1. 整体脚本执行:整个JavaScript文件或脚本标签作为首次宏任务执行。
  2. setTimeoutsetInterval:设定的定时器到期后,会作为宏任务被添加到宏任务队列。
  3. setImmediate (Node.js 特有):在Node.js中,setImmediate用于在当前事件循环结束时执行。
  4. I/O:包括从网络、文件系统等进行的输入/输出操作。
  5. UI 渲染:浏览器将计算好的DOM更新渲染到屏幕上。
  6. requestAnimationFrame:用于动画的帧同步,会在下一次重绘之前执行。

微任务(Microtasks)

微任务在当前宏任务完成后立即执行,它们包括:

  1. Promise 回调Promise.then(), .catch(), 和 .finally() 方法。
  2. MutationObserver:用于监听DOM树变化的API,当DOM变化时触发。
  3. queueMicrotask:一个标准的API,允许开发者显式地将函数排入微任务队列。
  4. process.nextTick (Node.js):在Node.js中,process.nextTick 用于延迟函数的执行直到当前操作结束,但它会在当前执行栈清空之后,下一次事件循环之前执行。

宏任务示例

尽管setTimeout的延迟时间设置为0,它仍然是一个宏任务,会在当前宏任务执行完毕后,下一个事件循环迭代中执行。

console.log('Script start');setTimeout(function() {console.log('setTimeout');
}, 0);console.log('Script end');

输出:

Script start
Script end
setTimeout

微任务示例

Promisethen回调是微任务,它们会在当前宏任务的所有代码执行完毕后立即执行。

console.log('Script start');Promise.resolve().then(function() {console.log('promise1');
}).then(function() {console.log('promise2');
});console.log('Script end');

输出:

Script start
Script end
promise1
promise2

微任务与宏任务的执行时序

在这个示例中,我们可以看到Promise的微任务在当前宏任务的代码执行完毕后立即执行,而两个setTimeout的宏任务则在下一个事件循环迭代中执行。

console.log('Script start');setTimeout(function() {console.log('setTimeout');
});Promise.resolve().then(function() {console.log('promise1');
});setTimeout(function() {console.log('setTimeout2');
}, 0);console.log('Script end');

输出:

Script start
Script end
promise1
setTimeout2 (next event loop iteration)
setTimeout

结论

  • 微任务和宏任务是JavaScript异步编程的基石。
  • 微任务提供了一种更快的异步处理方式,通常用于快速连续的异步操作,而宏任务则包括了更广泛的异步事件。
http://www.yayakq.cn/news/218959/

相关文章:

  • wordpress可以仿站吗什么网站可以免费做视频的软件有哪些
  • 遵义市城乡建设局安管人员考试网站二维码制作方法
  • 上海市建设安全协会网站弹窗广告投放平台
  • 如何做电影网站狼视听动漫设计专业哪个学校比较好
  • 泉州有那些网站建设公司淄博网站建设及托管
  • 成都网站运营短视频推广营销
  • 服装品牌网站建设2023年防疫新政策
  • 宜昌网站建设兼职室内设计软件免费下载
  • 专注吴中网站建设推广国外做螺栓比较好的网站
  • 建网站当老板关于网站开发的论文
  • 广州网站建设推广易尚郑州网站制作网
  • 中国电子系统建设公司网站做网站视频存储
  • wordpress视频发布站主题苏州 中英文网站建设
  • 南昌专业的企业网站开发公司网站开发技术经理职责
  • 做问卷用哪个网站国内重大新闻10条2022
  • 公司如何做网站推广网站后台管理图片水印怎么做
  • 企业官网seo东营网站优化
  • 如何建立营销型网站建设集团网站方案设计
  • 自适应网站怎么做wordpress不锈钢企业
  • 织梦网站专题模板湖南网站建设公司 都来磐石网络
  • 建材网站建设功能方案做网站谁家好
  • 医院网站建设规范专门做画册封面的网站
  • 网站开发要用什么工具软件上海公司牌照价格2023年
  • 阿里云虚拟主机怎么建设网站浙江和海建设集团网站
  • 手机微网站建设如何 建设一个网站
  • 学校门户网站建设必要性本地app制作公司地址
  • 做网站哪些软件门户网站是专一化好还是多元化好
  • 网站国际推广库尔勒西部建设网站
  • 公司做网站的费用的会计分录可信网站认证代理
  • 手机端网站建设步骤心理咨询中心网站模板