如何判断一个 ES6 Promise 是否已经被完成/拒绝/解决?

介绍

ES6 Promise 是一种用于异步编程的非常强大而且流行的工具。当你在使用 Promise 时,有时候你会想知道一个 Promise 的状态是否已经被完成、拒绝或者解决。这篇文章将向你展示如何实现这些操作。

Promise 状态

一个 Promise 可以有以下三个状态:

  • pending:Promise 的初始状态,表示 Promise 异步操作还没有完成。
  • fulfilled:表示 Promise 异步操作已经成功完成,并且返回了一个值。
  • rejected:表示 Promise 异步操作已经失败,抛出了一个错误。

判断 Promise 状态

使用 .then() 或 .catch()

Promise 提供了 .then().catch() 方法来处理异步操作的结果。如果一个异步操作已经完成并成功了,.then() 方法将会被调用;如果一个异步操作已经完成并失败了,.catch() 方法将会被调用。你可以通过使用这些方法来判断一个 Promise 是否已经被完成、拒绝或者解决。

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

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

上面的代码创建了一个新的 Promise 对象,并使用 .then().catch() 方法来处理异步操作的结果。如果 Promise 已经完成,.then() 方法将会被调用,如果 Promise 被拒绝,.catch() 方法将会被调用。

使用 .finally()

ES6 还引入了 .finally() 方法,该方法会在 Promise 完成时无论成功还是失败都会被调用。你可以使用 .finally() 方法来判断一个 Promise 是否已经解决。

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

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

上面的代码创建了一个新的 Promise 对象,并使用 .finally() 方法来处理异步操作的结果。如果 Promise 解决了,.finally() 方法将会被调用。

示例

下面是一个使用 .then(), .catch(), 和 .finally() 来判断一个 Promise 状态的示例:

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

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

上述示例中,我们创建了一个新的 Promise 对象,等待一秒钟后返回 Success! 字符串。然后我们使用 .then(), .catch(), 和 .finally() 方法分别处理成功、失败和完成的情况。

总结

通过本文,我们学习了如何使用 .then(), .catch(), 和 .finally() 方法来判断一个 Promise 是否已经被完成、拒绝或者解决。这些方法是非常有用的,在实际项目中也经常被使用到。希望这篇文章能够对你理解 Promise 以及异步编程有所帮助!

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