Promise.resolve() 和 Promise.reject() 的使用场景

阅读时长 5 分钟读完

什么是 Promise?

Promise 是一种用于异步编程的对象,它表示一个异步操作的最终状态(成功或失败)以及返回的值或错误信息。Promise 对象可以让我们更方便、更规范地处理异步操作,解决了回调函数的不健壮性、嵌套过深带来的可读性问题等。

Promise.resolve()

Promise.resolve() 方法返回一个以给定参数解析后的 Promise 对象,如果参数本身就是 Promise 对象,则直接返回该对象。Promise.resolve() 方法也可以接受 thenable 对象,将其解析为 Promise 对象。

作为 Promise 的实例方法,Promise.resolve() 通常用于将现有的值转为 Promise 对象,这在编写简单的异步代码时非常有效。

以下是一个使用 Promise.resolve() 的示例代码:

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

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

输出:

为了更好的理解 Promise.resolve() 的使用情况,我们来看一个具体的实际场景,假设我们需要在页面渲染完成后执行一些操作,比如请求数据,然后根据这些数据更新页面上的内容。这时我们可以使用 Promise.resolve() 来构建一个 Promise 对象,当 DOM 完成渲染后,Promise 将会被解决并执行我们的代码逻辑。

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

Promise.reject()

Promise.reject() 方法返回一个被拒绝的 Promise 对象,拒绝原因是一个提供的值。在异步操作失败时,Promise.reject() 可以用于返回一个已拒绝的 Promise 对象,并且可以传递一个错误信息或异常对象作为拒绝原因。

以下是一个使用 Promise.reject() 的示例代码:

输出:

Promise.reject() 的使用场景通常在异步过程中需要返回错误信息和异常对象时,如下:

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

在上面的代码中,如果 fetch 请求响应出错,我们可以通过 Promise.reject() 返回一个错误对象,并在下游 catch 函数中处理错误逻辑。

总结

Promise.resolve() 和 Promise.reject() 是 Promise 定义的两个实例方法,分别用于将现有的值转为 Promise 对象、返回一个被拒绝的 Promise 对象,并可以传递一个错误信息或异常对象。使用 Promise.resolve() 可以简化异步代码,使用 Promise.reject() 可以更好地处理错误逻辑。在实际使用中,我们需要结合具体的场景选择合适的方法以及适当地添加对应的 catch 功能进行错误处理,以方便我们写出更健壮可靠的异步代码。

参考文献:MDN - Promise.resolve() MDN - Promise.reject()

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64ebf38ef6b2d6eab3641513

纠错
反馈