欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 文化 > 【ajax核心05】宏任务与微任务

【ajax核心05】宏任务与微任务

2025/4/19 9:44:54 来源:https://blog.csdn.net/qq_67896626/article/details/139900601  浏览:    关键词:【ajax核心05】宏任务与微任务

ES6之后引入Promise对象(用来管理异步任务),让JS引擎也可以发起异步任务

一:异步任务分类

异步任务分为:宏任务与微任务

宏任务

由浏览器环境执行的异步代码

具体宏任务分类

请添加图片描述

微任务

由JS引擎执行的代码
在这里插入图片描述
创建Promise对象时,本身时同步任务。但是then与catch里面的回调函数是异步任务

二:JS内代码执行流程

  1. 执行script脚本事件宏任务中的同步代码
  2. 遇到宏任务/微任务交给对应的宿主环境,有结果的回调函数进入对应队列等待执行
  3. 执行栈空闲(同步任务执行完毕)时,优先清空微任务队列后,再执行宏任务队列中的任务

三:经典面试题

面试题1

<script>// 目标:回答代码执行顺序console.log(1)setTimeout(() => {console.log(2)const p = new Promise(resolve => resolve(3))p.then(result => console.log(result))}, 0)const p = new Promise(resolve => {setTimeout(() => {console.log(4)}, 0)resolve(5)})p.then(result => console.log(result))const p2 = new Promise(resolve => resolve(6))p2.then(result => console.log(result))console.log(7)</script>//1 7 5 6 2 3 4

面试题2

console.log(1)setTimeout(() => {// 宏任务console.log(2)}, 0)const p = new Promise((resolve, reject) => {resolve(3)})p.then(res => {//微任务console.log(res)})console.log(4)

打印顺序为:1 4 3 2
setTimeout与.then方法分别是宏任务与微任务,其执行时分别位于宏任务队列和微任务队列中。由于.then方法执行所在的环境在JS引擎中,所以其比在宏任务队列中的setTimeout更先执行。
微任务队列中的任务比宏任务队列中的任务更先执行

如何赚钱

现在是否厌倦了程序员朝九晚五的生活,想给自己生活寻找另一条路径;在校大学生是否愿意在校进行人生中的第一次创业,获取人生第一桶金;是否正在看此篇文章的你愿意通过五年努力,让自己开上梦想的中的车子;

那就从提升认知开始,加入微木的知识星球:微木的创业思考

专属于创业者的交流集中地,创业、认知提升找微木!

1 创业底层方法论

2 从千万本书书籍中挑选出的,人生必读书目清单。

3 认知提升学习资源(秘密)

4 寻找赚钱项目底层方法论

5 好书精华提炼

6 深度链接微木

每天仅需0.3元/天,欢迎加入专属于创业者的交流集中地,创业、认知提升找微木!
在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词