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

7.Demo Js执行同步任务,微任务,宏任务的顺序(3)

一个包含 同步任务、微任务(Promise)、宏任务(setTimeout) 的例子,JS 是怎么调度这些任务的。

🎯 例子代码(建议复制到浏览器控制台运行)

console.log(‘同步任务 1’);

setTimeout(() => {
console.log(‘宏任务 1’);
}, 0);

Promise.resolve().then(() => {
console.log(‘微任务 1’);
});

console.log(‘同步任务 2’);

setTimeout(() => {
console.log(‘宏任务 2’);
}, 0);

Promise.resolve().then(() => {
console.log(‘微任务 2’);
});

console.log(‘同步任务 3’);

✅ 输出顺序是:

同步任务 1
同步任务 2
同步任务 3
微任务 1
微任务 2
宏任务 1
宏任务 2

🔍 为什么是这样?看执行顺序解析:

在这里插入图片描述

💡 如果你再加一个 await 会怎样?

async function test() {
console.log(‘async 1’);
await Promise.resolve();
console.log(‘async 2’);
}

test();

console.log(‘主线程’);

Promise.resolve().then(() => {
console.log(‘then’);
});

输出顺序:

async 1
主线程
then
async 2

解释:
• async 1 是同步部分,立即执行。
• await Promise.resolve() 会暂停 test() 剩下的部分,把后面的逻辑变成微任务。
• 主线程 是普通同步代码,立即执行。
• then 是微任务 → 执行
• async 2 也作为微任务 → 紧随其后执行

http://www.xdnf.cn/news/11908.html

相关文章:

  • QGIS新手教程3:QGIS矢量图层导入与导出+Shape Tools插件绘图
  • C++查找算法全解析:从基础到高级应用
  • MQTT协议:物联网时代的通信基石
  • 手写 vue 源码 === runtime-dom 实现
  • Solidity 开发指南:构建你的第一个 DApp
  • JMeter函数整理
  • 软件安全:漏洞利用与渗透测试剖析、流程、方法、案例
  • 光量子计算芯片改变了黄仁勋成见?英伟达拟与PsiQuantum联手颠覆未来算力
  • 运维实施42-SHELL 编程
  • 【envoy】-1.安装与下载源码
  • 渗透实战PortSwigger靶场:lab13存储型DOM XSS详解
  • 期末复习(学习)之机器学习入门基础
  • SPI通信协议(软件SPI读取W25Q64)
  • 本地部署网站流量分析工具 Matomo 并实现外部访问
  • 机器学习实战37-基于情感字典和机器学习的股市舆情分析可视化系统
  • Python-面向对象
  • 敏捷开发中如何避免过度加班
  • 银河麒麟V10ServerSP3中快速安装Minio及注册自启服务
  • 中小制造企业转型:低成本国产工业软件替代方案实践
  • 国标GB28181视频平台EasyGBS视频实时监控系统打造换热站全景可视化管理方案
  • 04.两数之和
  • 基于STM32F407的情绪感知智能助眠系统
  • 8天Python从入门到精通【itheima】-68(元组)
  • 数据“出国”需办“签证”: 如何申请数据出境安全评估?
  • 《校园生活平台从 0 到 1 的搭建》第一篇:创建项目与构建目录结构
  • 数据库表中「不是 null」的含义
  • Cursor 工具项目构建指南: Python 3.8 环境下的 Prompt Rules 约束
  • 项目实战——C语言扫雷游戏
  • 【Spark征服之路-2.1-安装部署Spark(一)】
  • 【Windows开发】Windows 事件跟踪 (ETW)