Promise 是 JavaScript 中的异步编程解决方案,它可以让我们更优雅的处理异步操作。在 Promise 中,Promise.resolve
和 Promise.reject
是两个非常常用的方法,本文将详细介绍这两个方法的使用以及注意事项。
Promise.resolve
Promise.resolve
方法返回一个 Promise 对象,这个 Promise 对象的状态为已解决(resolved),并且它的值为传入的参数。如果传入的参数已经是一个 Promise 对象,则直接返回这个 Promise 对象。
使用方法
Promise.resolve(value);
示例代码
const p1 = Promise.resolve(1); console.log(p1); // Promise {<resolved>: 1} const p2 = Promise.resolve(Promise.resolve(2)); console.log(p2); // Promise {<resolved>: 2}
注意事项
- 如果传入的参数是一个 Promise 对象,则直接返回这个 Promise 对象,不会新建一个 Promise 对象。
- 如果传入的参数是一个 thenable 对象,即具有 then 方法的对象,则
Promise.resolve
方法会将这个对象转换为 Promise 对象,并且立即执行 then 方法。 - 如果不传入参数,则返回一个空的 Promise 对象,状态为已解决。
Promise.reject
Promise.reject
方法返回一个 Promise 对象,这个 Promise 对象的状态为已拒绝(rejected),并且它的值为传入的参数。
使用方法
Promise.reject(reason);
示例代码
const p1 = Promise.reject('error'); console.log(p1); // Promise {<rejected>: "error"} const p2 = Promise.reject(new Error('error')); console.log(p2); // Promise {<rejected>: Error: error at <anonymous>:1:14}
注意事项
- 如果传入的参数是一个 Promise 对象,则直接返回这个 Promise 对象,不会新建一个 Promise 对象。
- 如果不传入参数,则返回一个空的 Promise 对象,状态为已拒绝。
总结
Promise.resolve
和 Promise.reject
是 Promise 中非常常用的方法,它们可以让我们更优雅的处理异步操作。在使用过程中,需要注意传入参数的类型和返回值的类型,以免出现意外情况。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65833d8dd2f5e1655de38faf