如何创建和使用 Promise.resolve() 和 Promise.reject()?

推荐答案

Promise.resolve() 用于创建一个已解决(fulfilled)的 Promise 对象,而 Promise.reject() 用于创建一个已拒绝(rejected)的 Promise 对象。

Promise.resolve() 的使用:

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

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

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

Promise.reject() 的使用:

本题详细解读

Promise.resolve()

Promise.resolve() 是一个静态方法,它返回一个 Promise 对象,并且该对象的状态是已解决(fulfilled)。它接收一个参数,这个参数可以是任何值,包括:

  1. 普通值: 如果传入一个非 Promise 的值,例如数字、字符串、布尔值或对象, Promise.resolve() 将返回一个立即解决的 Promise,其解决的值为传入的参数。

  2. thenable 对象: 如果传入一个 thenable 对象(具有 then 方法的对象),Promise.resolve() 会尝试将该 thenable 对象转换为一个 Promise。转换过程中会调用 thenable 对象的 then 方法,并将新 Promiseresolvereject 函数作为参数传入。如果 thenablethen 方法最终调用了 resolve,那么新 Promise 也将解决,反之则拒绝。

  3. Promise 对象: 如果传入一个 Promise 对象,Promise.resolve() 将直接返回该 Promise 对象,而不会进行任何修改。这在一些场景中很有用,比如需要确保某个值是 Promise 实例时。

Promise.reject()

Promise.reject() 是另一个静态方法,它返回一个 Promise 对象,并且该对象的状态是已拒绝(rejected)。它接收一个参数,该参数通常表示拒绝的原因(错误信息)。

应用场景:

  • Promise.resolve() 常常用于以下情况:

    • 将非 Promise 值转换为 Promise,以便进行 Promise 链式操作。
    • 在异步函数中,当需要立即返回一个成功状态的 Promise 时。
    • thenable 对象转换为 Promise
  • Promise.reject() 常常用于以下情况:

    • 在异步操作发生错误时,创建一个已拒绝的 Promise,并携带错误信息。
    • 在某些需要立即返回失败状态的 Promise 的场景。

示例解释:

在推荐答案的代码中,我们通过不同的例子演示了 Promise.resolve()Promise.reject() 的用法。我们可以看到 Promise.resolve() 可以直接解决普通值,也可以通过 thenable 对象间接解决,而 Promise.reject() 则直接创建了一个拒绝状态的 Promise,并通过 catch 方法捕获错误。

纠错
反馈