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

阅读时长 3 分钟读完

介绍

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

纠错
反馈