ES6 中的 Promise 对象的 rejected 状态使用方法

ES6 中的 Promise 对象的 rejected 状态使用方法

概述

JavaScript 异步编程经常会使用 Promise 对象,通过 Promise 对象我们可以封装异步的操作,使得代码看起来更加简洁明了,同时也更加易于维护。 Promise 对象中有三种状态:

  • pending: 初始状态
  • fulfilled: 操作成功
  • rejected: 操作失败

Promise 对象状态变化只有两种可能:从 pending 变成 fulfilled 或者从 pending 变成 rejected。 本文主要介绍在 Promise 对象 rejected 状态时的使用方法。

Promise.reject()

Promise.reject(reason) 方法返回一个被拒绝的 Promise 对象,其中 reason 参数为拒绝原因。

示例代码:

.catch() 方法用于捕获被拒绝的 Promise 对象,.catch() 的参数为失败回调函数, 该函数接收拒绝原因作为参数。

Promise.then()

Promise.then(onFulfilled, onRejected) 方法用于指定 Promise 对象的状态改变后要执行的操作。其中 onFulfilled 是状态变为 fulfilled 时执行的回调函数,onRejected 是状态变为 rejected 时执行的回调函数。在使用 Promise 对象时建议定义 onRejected 函数, 以处理异步操作中返回的错误结果。

示例代码:

Promise.reject() 方法中返回一个被拒绝的 Promise 对象, 同样可以使用 .then() 方法。 当然,这里的 onFulfilled 回调函数将不会被执行,但是 onRejected 回调函数会被执行。

Promise.catch()

Promise.catch() 方法和 Promise.then() 方法的作用是一样的。其实,Promise.catch() 是 Promise.then(null, rejection) 的别名,用于指定状态改变时的错误处理函数。

示例代码:

Promise.all()

Promise.all() 方法用于将多个 Promise 对象进行合并,并返回一个新的 Promise 对象。

Promise.all() 方法接收的参数为一个 Promise 对象的数组,当数组中的所有 Promise 对象都转换为 fulfilled 状态时,返回的 Promise 对象的状态才会变为 fulfilled;当数组中的任何 Promise 对象转换为 rejected 状态时,返回的 Promise 对象的状态就会变成 rejected。

示例代码:

Promise.all() 方法的返回值由所有 Promise 对象的返回值组成的数组。 在异步操作时, 使用 Promise.all() 方法可以很方便的将多个异步操作结果进行汇总处理。

总结

使用 Promise 对象可以很好的解决异步编程过程中的问题。 在使用 Promise 对象时,对于 rejected 状态的处理一定要合理,否则会使程序无法正常运行。除了上面介绍的方法之外,Promise 对象还有一些其他的实用操作可以用于处理状态变化。 对于 Promise 对象的使用应该在实际开发过程中进行深入的学习,遇到问题时及时查阅相关资料或者寻求帮助,这样可以很好的提高开发效率。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/652e26067d4982a6ebf33713


纠错
反馈