在 JavaScript 中,Promise 是一种非常常见的异步编程方式。在 Promise 中,我们可以使用 Promise.all() 方法来并行处理多个 Promise,等待所有 Promise 完成后再执行后续代码。但是,如果其中一个 Promise 失败了,整个 Promise.all() 就会失败,导致后续代码无法执行。为了解决这个问题,ECMAScript 2019 引入了一个新的 Promise 方法:Promise.allSettled()。
Promise.allSettled() 是什么?
Promise.allSettled() 方法接收一个 Promise 数组作为参数,并返回一个新的 Promise。当所有的 Promise 都执行完毕时,该 Promise 会被解析,返回一个包含每个 Promise 结果的数组,每个结果都是一个对象,包含以下两个属性:
- status:表示 Promise 的状态,值为 "fulfilled" 或 "rejected"。
- value/reason:表示 Promise 的返回值或失败原因。
如何使用 Promise.allSettled()?
下面是一个使用 Promise.allSettled() 的示例代码:
// javascriptcn.com 代码示例 const promises = [ Promise.resolve(1), Promise.reject(new Error('rejected')), Promise.resolve(3) ]; Promise.allSettled(promises) .then(results => { results.forEach(result => { console.log(result.status); console.log(result.value || result.reason); }); });
在这个例子中,我们创建了一个 Promise 数组,其中包含三个 Promise,一个成功,一个失败,一个成功。然后我们使用 Promise.allSettled() 方法来并行执行这三个 Promise,并在 Promise 完成后输出每个 Promise 的状态和结果。
Promise.allSettled() 的学习和指导意义
使用 Promise.allSettled() 方法可以让我们更好地处理多个 Promise 的并行执行,避免了 Promise.all() 方法中的问题。这个新特性可以让我们更好地控制异步代码的执行流程,提高代码的可读性和可维护性。
总结
Promise.allSettled() 是 ECMAScript 2019 引入的一个新特性,可以并行执行多个 Promise,并在所有 Promise 完成后返回一个包含每个 Promise 结果的数组。这个新特性可以让我们更好地控制异步代码的执行流程,提高代码的可读性和可维护性。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/657907fdd2f5e1655d2f5d89