首页 > web前端 > js教程 > 正文

JavaScript 中 Promise 处理程序的执行顺序是什么?

Susan Sarandon
发布: 2024-10-24 17:42:02
原创
723 人浏览过

What is the Execution Order of Promise Handlers in JavaScript?

理解 Promise 执行顺序

在 JavaScript 中,promise 用于处理异步操作。 Promise 处理程序的执行顺序可能会令人困惑,尤其是当存在嵌套 Promise 时。

代码的逐行分析

让我们分析一下提供的代码行逐行了解执行顺序:

  • 第 1 行: 创建一个立即解析为 'A' 的 Promise 并为其附加一个 .then() 处理程序。
  • 第 2 行: 当 Promise 解析为“A”并返回“B”时,控制台记录“2”。
  • 第 5 行:另一个.then() 处理程序被添加到第 1 行中创建的 Promise 中。
  • 第 6-8 行: 创建一个解析为“C”的新 Promise 并附加两个 .then() 处理程序该控制台分别记录“7”和“8”。
  • 第 10 行:控制台记录“3”并返回“B”。
  • 第 12 行- 14: 另一个 .then() 处理程序被添加到第 5 行中创建的 Promise 中。
  • 第 15-17 行: 创建一个解析为“D”并附加的新 Promise两个 .then() 处理程序分别控制台记录“9”和“10”。
  • 第 19 行:控制台记录“4”。
  • 第 22 行-24: 另一个 .then() 处理程序被添加到第 12 行创建的 Promise 中。
  • 第 27 行: 当 Promise 解析时,控制台记录“5”。

执行顺序

  1. 第 1 行: Promise 已解决,控制台记录“2 A”
  2. 第 10 行: 控制台日志“3 B”
  3. 第 19 行: 控制台日志“4 B”
  4. 第 27 行: 控制台日志“5 未定义”
  5. 第 7 行: 控制台日志“7 C”
  6. 第 8 行: 控制台日志“8 未定义”
  7. 第 15 行: 控制台记录“9 D”
  8. 第 17 行:控制台记录“10 undefined”
  9. 第 30 行: 控制台日志“1”
  10. 第 33 行: 控制台日志“6”

讨论

  • Promise 处理程序是异步调度的,因此它们会在当前执行线程完成后执行。
  • 嵌套的 Promise 创建没有预定执行顺序的独立 Promise 链。
  • 的顺序Promise 的执行取决于 Promise 引擎的实现。在这种情况下,引擎在宏任务 (setTimeout()) 之前使用调度微任务(promise 处理程序)。
  • 不建议依赖嵌套 Promise 的特定执行顺序。相反,链承诺明确控制其执行顺序。

以上是JavaScript 中 Promise 处理程序的执行顺序是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!