在现代浏览器和 Node.js 环境下,异步编程已经成为了绝大多数前端开发的必备技能。Promise 是一种流行的解决方案,通过 Promise 可以更加方便地处理异步操作。在 ES7 中,新增了两个方法 Promise.resolve() 和 Promise.reject(),本文将详细介绍这两个方法的使用方法和常见应用场景。
Promise.resolve()
Promise.resolve() 可以将一个对象转成 Promise 对象。如果该对象已经是 Promise 对象了,那么 Promise.resolve() 不会进行任何操作,直接将该 Promise 对象返回。
使用方法
Promise.resolve(value)
其中 value
是要转换成 Promise 对象的值。如果 value
本身就是 Promise 对象,则直接返回该 Promise 对象。
示例
const p = Promise.resolve(10); p.then(value => { console.log(value); // 输出 10 })
const p1 = Promise.resolve(1); const p2 = Promise.resolve(p1); p2.then(value => { console.log(value); // 输出 1 })
在第二个示例中,我们将 Promise 对象 p1
作为参数传入 Promise.resolve(),返回的 Promise 对象 p2
依然是 p1
,因为 p1
本身就是 Promise 对象。
Promise.reject()
Promise.reject() 方法返回一个 Promise 对象,该 Promise 对象的状态为 rejected。它的参数通常是 Error 对象,表示 Promise 对象的状态变为 rejected,即异步操作失败。
使用方法
Promise.reject(reason)
其中 reason
是一个字符串或 Error 对象,表示 Promise 对象的状态变为 rejected 的原因。
示例
const p = Promise.reject('Error message'); p.catch(reason => { console.log(reason); // 输出 Error message });
const p1 = Promise.reject('Error message'); const p2 = Promise.resolve(p1); p2.catch(reason => { console.log(reason); // 输出 Error message })
在第二个示例中,我们将 Promise.reject() 返回的 Promise 对象 p1
作为参数传入 Promise.resolve(),返回的 Promise 对象 p2
依然是 p1
,因为 p1
本身就是 rejected 状态的 Promise 对象。
应用场景
Promise.resolve() 和 Promise.reject() 经常用于将异步操作转换成 Promise 对象,方便使用 Promise 的链式调用。
异步操作转化为 Promise 对象
-- -------------------- ---- ------- -------- --------- - ------ --- ----------------- ------- -- - ------------- -- - ----- ---- - --- -- --- ---- - ------------- - ---------- ------- -- ------ --- - -- -- --------- --------- ------- ------- ------- ----- ------------------------------------ -- - ------------------ --------------- -- - -------------------- ---展开代码
将包含多个异步操作的数组转化成 Promise 对象
-- -------------------- ---- ------- -- ----------------------- ------- -------- ----- -------- - - ------------------- ------------------- ------------------ ----------------- ------------------ -- -- -- ------------- --- ------- ------- ------- ------- ------- ----- --------------------------------- -- - -------------------- -- -- --- -- --------- -- -------------- -- - ------------------- ---展开代码
结语
Promise.resolve() 和 Promise.reject() 提供了一种方便将异步操作转换成 Promise 对象的方法,可以方便地使用 Promise 的链式调用和 Promise.all() 等方法,简化异步编程的复杂度,提高开发效率。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67c156c5314edc2684946874