推荐答案
Promise.resolve()
用于创建一个已解决(fulfilled)的 Promise 对象,而 Promise.reject()
用于创建一个已拒绝(rejected)的 Promise 对象。
Promise.resolve() 的使用:
-- -------------------- ---- ------- -- -- ------- ----- ---------------- - -------------------- --------------------------- -- - ------------------- -- --- -- --- -- -- ---- -------- ----- ---- ------ ----- -------- - - ----- --------- -- - ------------- -- - ----------------- ----------- -- ----- - -- ----- ---------------- - -------------------------- --------------------------- -- - ------------------- -- --- --------- --------- --- ----- ----- --- -- -- ---- ------- --------- ------- -- ----- --------------- - --- --------------- -- --------------------- ----- ---------------- - --------------------------------- --------------------------- -- - ------------------- -- --- ---------- ---
Promise.reject() 的使用:
const rejectedPromise = Promise.reject("Error occurred!"); rejectedPromise.catch(error => { console.error(error); // 输出: "Error occurred!" });
本题详细解读
Promise.resolve()
Promise.resolve()
是一个静态方法,它返回一个 Promise
对象,并且该对象的状态是已解决(fulfilled)。它接收一个参数,这个参数可以是任何值,包括:
普通值: 如果传入一个非 Promise 的值,例如数字、字符串、布尔值或对象,
Promise.resolve()
将返回一个立即解决的Promise
,其解决的值为传入的参数。thenable 对象: 如果传入一个
thenable
对象(具有then
方法的对象),Promise.resolve()
会尝试将该thenable
对象转换为一个Promise
。转换过程中会调用thenable
对象的then
方法,并将新Promise
的resolve
和reject
函数作为参数传入。如果thenable
的then
方法最终调用了resolve
,那么新Promise
也将解决,反之则拒绝。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
方法捕获错误。