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

JS中的Promise经典题目解析

这段代码很有代表性,涵盖了多个 JavaScript 知识点,特别是不同异步操作的执行优先级。

async function async1() {console.log('async1 start');await async2();console.log('async1 end');
}async function async2() {console.log('async2');
}console.log('script start');setTimeout(function() {console.log('setTimeout');
}, 0);async1();new Promise(function(resolve) {console.log('promise1');resolve();
}).then(function() {console.log('promise2');
});console.log('script end');

知识点总结:

  1. async/await 是基于 Promise 的语法糖,提供了更方便、直观的写法。
  2. 当使用 async 定义函数时,函数不会立即执行,只有在调用时才会开始执行。
  3. Promise 内部的代码是同步执行的,而 .then() 中的代码是异步的。当使用 async 时,await expression; 中的 expression 是要等待的 Promise 实例,其中的代码会同步执行,而 await 后面的代码相当于 .then() 的内容,因此是异步执行的。
  4. async 和 Promise 的代码执行优先级相同,都遵循先进先出(FIFO)原则,并且它们的优先级高于宏任务。setTimeout() 属于宏任务。

执行顺序分析:

根据以上代码及解析,执行顺序为:

  1. script start
  2. async1 start
  3. async2
  4. promise1
  5. script end
  6. promise2
  7. setTimeout
http://www.lryc.cn/news/456870.html

相关文章:

  • 【机器学习】金融预测 —— 风险管理与股市预测
  • Bootstrap 5 分页组件使用教程
  • Linux 安装 NVM 并配置 npm 加速,开发 node 项目不再愁
  • MySQL 多条件查询
  • 深度学习模型
  • Nexpose 6.6.271 发布下载,新增功能概览
  • SimpleRAG-v1.0.3:增加文件对话功能
  • 数学建模算法与应用 第7章 数理统计与方法
  • 【网络】洪水攻击防御指南
  • 应对Redis大Key挑战:从原理到实现
  • 网络安全的全面指南
  • 前端性能优化全面指南
  • JavaScript-API(倒计时的实现)
  • 【C++】——继承【上】
  • SpringBoot 整合 阿里云 OSS图片上传
  • 内核编译 设备驱动 驱动程序
  • 自由学习记录
  • 在 C# 中使用 LINQ 查询文件列表并找出最大文件
  • 数学建模算法与应用 第6章 微分方程建模及其求解方法
  • 数据库的相关知识
  • Python cachetools常用缓存算法汇总
  • java类和对象_成员变量方法修饰符局部变量this关键字-cnblog
  • 海信和TCL雷鸟及各大品牌智能电视测评
  • Linux 基本系统命令及其使用详解手册(六)
  • Oracle架构之段管理和区管理
  • mybatis-plus转换数据库json类型数据为java对象
  • Java | Leetcode Java题解之第467题环绕字符串中唯一的子字符串
  • 诺贝尔物理奖与化学奖彰显AI力量,探索智能新边界
  • 基于京东:HotKey实现自动缓存热点Key!!!
  • ★ 算法OJ题 ★ 二分查找算法