Promise.allSettled() 方法详解及使用注意事项

阅读时长 3 分钟读完

介绍

在前端开发中,经常需要处理多个异步操作,比如同时请求多个接口数据,而 Promise.all() 方法可以用来解决这个问题。但是,如果其中一个异步操作出现了错误,整个 Promise.all() 方法就会失败并返回错误信息,这就会导致其他异步操作也被中断。这时候,我们需要使用 Promise.allSettled() 方法。

Promise.allSettled() 方法在所有异步操作完成后返回一个数组,数组中包含了每个异步操作的结果,不管是成功还是失败。这个方法返回的结果不会中断其他异步操作,因此可以保证所有异步操作都会被执行完毕。

语法

Promise.allSettled(iterable)

  • iterable: 一个可迭代对象,比如数组或者具有迭代器的对象。

返回值

一个 Promise 对象,当所有异步操作都完成后,返回一个数组。数组中的每个元素都是一个对象,包含以下属性:

  • status:表示异步操作的状态,可能的值为 "fulfilled""rejected"
  • value:表示异步操作成功时的返回值。
  • reason:表示异步操作失败时的错误信息。

示例代码

输出结果:

注意事项

  • Promise.allSettled() 方法是 ES2020 新增的方法,因此需要使用较新的浏览器或者 Node.js 版本才能使用。
  • 如果需要在所有异步操作完成后进行后续处理,可以使用 Promise.allSettled().then() 方法。
  • 如果需要在某个异步操作失败时立即中断其他异步操作,可以使用 Promise.all() 方法。
  • 当使用 Promise.allSettled() 方法时,建议在处理结果时检查每个异步操作的状态,以便正确处理成功和失败的情况。

结论

Promise.allSettled() 方法是处理多个异步操作时非常有用的一个方法,它可以保证所有异步操作都能被执行完毕,并返回每个异步操作的状态和结果。在实际开发中,我们可以根据具体需求选择使用 Promise.all() 或者 Promise.allSettled() 方法来处理异步操作。

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

纠错
反馈