什么是 Promise?
Promise 是一种用于异步编程的对象,它表示一个异步操作的最终状态(成功或失败)以及返回的值或错误信息。Promise 对象可以让我们更方便、更规范地处理异步操作,解决了回调函数的不健壮性、嵌套过深带来的可读性问题等。
Promise.resolve()
Promise.resolve() 方法返回一个以给定参数解析后的 Promise 对象,如果参数本身就是 Promise 对象,则直接返回该对象。Promise.resolve() 方法也可以接受 thenable 对象,将其解析为 Promise 对象。
作为 Promise 的实例方法,Promise.resolve() 通常用于将现有的值转为 Promise 对象,这在编写简单的异步代码时非常有效。
以下是一个使用 Promise.resolve() 的示例代码:
-- -------------------- ---- ------- ----- -------- - ------------------- ---------------------- ----- -------- - ----------------- ----- ------------------- --------- - ------------------------ - --- ----------------------
输出:
Promise {<resolved>: 1} Promise {<resolved>: 'fulfilled!'}
为了更好的理解 Promise.resolve() 的使用情况,我们来看一个具体的实际场景,假设我们需要在页面渲染完成后执行一些操作,比如请求数据,然后根据这些数据更新页面上的内容。这时我们可以使用 Promise.resolve() 来构建一个 Promise 对象,当 DOM 完成渲染后,Promise 将会被解决并执行我们的代码逻辑。
-- -------------------- ---- ------- -------- -------- - ----- ---- - - -- -- -- -- -- -- --- -- ------ ------------------------- -- - ---------------------------- -- - ------ ---------------- ------------ -- - ----------------- -- --- -
Promise.reject()
Promise.reject() 方法返回一个被拒绝的 Promise 对象,拒绝原因是一个提供的值。在异步操作失败时,Promise.reject() 可以用于返回一个已拒绝的 Promise 对象,并且可以传递一个错误信息或异常对象作为拒绝原因。
以下是一个使用 Promise.reject() 的示例代码:
const promise = Promise.reject(new Error('something went wrong')); promise.catch(error => { console.error(error.message); });
输出:
something went wrong
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