Promise 的状态转换及状态判断

Promise 是 ES6 中引入的一种异步编程的解决方案,它可以使异步操作更加简洁、可读,同时也可以避免回调地狱的问题。Promise 的状态有三种:pending、fulfilled 和 rejected。本文将详细介绍 Promise 的状态转换及状态判断,并提供示例代码。

Promise 的状态转换

Promise 有三种状态,分别是 pending、fulfilled 和 rejected。当创建一个 Promise 时,它的状态为 pending,即等待异步操作完成。当异步操作完成后,Promise 的状态会从 pending 转换为 fulfilled 或 rejected。

fulfilled 状态

当异步操作成功完成时,Promise 的状态会从 pending 转换为 fulfilled。此时,Promise 的 then 方法会被调用,并传递一个参数,即异步操作的结果。以下是一个示例:

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

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

rejected 状态

当异步操作失败时,Promise 的状态会从 pending 转换为 rejected。此时,Promise 的 catch 方法会被调用,并传递一个参数,即异步操作的错误信息。以下是一个示例:

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

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

Promise 的状态判断

在使用 Promise 时,我们需要知道 Promise 的状态,以便在合适的时候处理异步操作的结果。Promise 提供了三个方法来判断 Promise 的状态,分别是:

  • Promise.prototype.then
  • Promise.prototype.catch
  • Promise.prototype.finally

Promise.prototype.then

Promise.prototype.then 方法用于注册 Promise 状态变为 fulfilled 时的回调函数。该方法接收两个参数,分别为成功回调和失败回调。如果 Promise 的状态已经是 fulfilled,那么成功回调会被立即调用,并传递 Promise 的结果作为参数。以下是一个示例:

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

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

Promise.prototype.catch

Promise.prototype.catch 方法用于注册 Promise 状态变为 rejected 时的回调函数。该方法接收一个参数,即失败回调。如果 Promise 的状态已经是 rejected,那么失败回调会被立即调用,并传递 Promise 的错误信息作为参数。以下是一个示例:

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

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

Promise.prototype.finally

Promise.prototype.finally 方法用于注册 Promise 状态变化时的回调函数,无论 Promise 的状态是 fulfilled 还是 rejected,该方法都会被调用。该方法接收一个参数,即回调函数。以下是一个示例:

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

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

总结

本文详细介绍了 Promise 的状态转换及状态判断,并提供了示例代码。通过掌握 Promise 的状态转换及状态判断,我们可以更加灵活地使用 Promise 解决异步编程的问题。

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