我如何访问先前的承诺的结果?

在 JavaScript 的异步编程中,Promise 是一种常用的方式。它可以帮助我们解决回调地狱的问题,并提高代码的可读性和可维护性。在使用 Promise 时,我们通常会使用 then() 链来处理异步操作的结果。

但是,在某些场景下,我们可能需要访问之前的 Promise 结果。比如,当我们需要将多个异步操作的结果合并时,或者需要根据之前的结果来进行下一步操作时,就需要访问之前的 Promise 结果了。

那么,如何访问之前的 Promise 结果呢?其实很简单,只需在 then() 方法中返回一个新的 Promise 就可以了。下面是一个示例:

----- -------- - --- ----------------- ------- -- -
  ------------- -- ----------------- ------
---

----- -------- - -------------------- -- -
  -------------------- -- --------
  ------ ------ - - -------
---

-------------------- -- -
  -------------------- -- -------- -----
---

在上面的示例中,我们创建了一个 Promise 对象 promise1,它会在 1 秒后返回结果 'Hello'。然后,我们在 promise1 上调用了 then() 方法,返回一个新的 Promise 对象 promise2。在 promise2 的回调函数中,我们将之前的结果添加了一个空格和字符串 'World',并返回这个新的结果。最后,我们在 promise2 上再次调用 then() 方法,输出最终的结果。

需要注意的是,当在 then() 方法中返回一个新的 Promise 对象时,这个新的 Promise 对象的状态由回调函数返回值决定。如果返回的是一个 Promise 对象,那么这个 Promise 对象的状态会被作为新 Promise 对象的状态;如果返回的是一个非 Promise 对象,则会将其包装成一个 Promise 对象,并将其状态设置为 resolved。

除了在 then() 链中访问之前的承诺结果外,还可以使用 async/await 来实现相同的效果。下面是一个示例:

----- -------- - --- ----------------- ------- -- -
  ------------- -- ----------------- ------
---

----- -------- ----------- -
  ----- ------- - ----- ---------
  --------------------- -- --------

  ----- ------- - ------- - - -------
  ------ --------
-

----------------------- -- -
  -------------------- -- -------- -----
---

在上面的示例中,我们定义了一个名为 getResult 的异步函数,其中使用 await 关键字等待 promise1 执行完成并返回结果。然后,在回调函数中,我们对结果进行处理,并返回一个新的结果。最后,我们在 getResult 上调用 then() 方法,输出最终的结果。

总结一下,访问之前的 Promise 结果可以通过在 then() 方法中返回一个新的 Promise 对象或者使用 async/await 来实现。这种技巧在实际开发中非常实用,可以帮助我们更好地处理异步操作的结果。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/8195