首页  >  文章  >  web前端  >  JavaScript Promise 的执行顺序是什么?

JavaScript Promise 的执行顺序是什么?

Patricia Arquette
Patricia Arquette原创
2024-10-24 11:22:02867浏览

What Is the Order of Execution in JavaScript Promises?

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

JavaScript Promise 是一种处理异步操作的方法。当 Promise 被解析时,它会在当前执行线程完成后异步执行其 .then() 处理程序。这意味着当前线程中的任何同步代码都将在 .then() 处理程序之前运行。

示例

考虑以下代码片段:

<code class="javascript">Promise.resolve('A')
  .then(function(a){console.log(2, a); return 'B';})
  .then(function(a){
     Promise.resolve('C')
       .then(function(a){console.log(7, a);})
       .then(function(a){console.log(8, a);});
     console.log(3, a);
     return a;})
  .then(function(a){
     Promise.resolve('D')
       .then(function(a){console.log(9, a);})
       .then(function(a){console.log(10, a);});
     console.log(4, a);})
  .then(function(a){
     console.log(5, a);});
console.log(1);
setTimeout(function(){console.log(6)},0);</code>

结果此代码片段的内容为:

<code class="text">1
2 "A"
3 "B"
7 "C"
4 "B"
8 undefined
9 "D"
5 undefined
10 undefined
6</code>

说明

  1. 第 1 行:代码首先解析值为“A”的 Promise。
  2. 第 2-4 行:此 Promise 上的 .then() 处理程序将值“A”记录到控制台并返回值“B”。
  3. 第 5-9 行:前一个处理程序返回的 Promise 上的 .then() 处理程序将值“B”记录到控制台并返回相同的值。
  4. 第 10-14 行:前一个处理程序返回的 Promise 上的 .then() 处理程序将值“B”记录到控制台并返回相同的值。
  5. 第 15-19 行:前一个处理程序返回的 Promise 上的 .then() 处理程序将值“B”记录到控制台并返回相同的值。
  6. 第 20 行:.then() 处理程序在前一个处理程序返回的 Promise 上将值“B”记录到控制台。
  7. 第 21 行: setTimeout() 函数用于安排在延迟后执行的函数0 毫秒。
  8. 第 22 行:console.log() 函数用于将值“1”记录到控制台。

顺序执行

这段代码的执行顺序是:

  1. 首先执行第22行的console.log(),然后执行第1行的Promise.resolve() .
  2. 接下来执行第 2 行的 .then() 处理程序,然后执行第 5 行的 .then() 处理程序。
  3. 接下来执行第 10 行的 .then() 处理程序,然后是第 15 行的 .then() 处理程序。
  4. 接下来执行第 20 行的 .then() 处理程序。
  5. 最后执行第 21 行的 setTimeout() 函数。

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn