在 ES2021 中,JavaScript 引入了两个新的 Promise 函数:Promise.any() 和 Promise.allSettled()。这两个函数都可以用于解决 Promise 处理中的一些常见问题,同时也为开发者提供了更多的选择。
Promise.any()
Promise.any() 函数接收一个 Promise 数组,只要其中一个 Promise 状态变为 resolved,就会立即返回该 Promise 的值。如果所有 Promise 都失败了,Promise.any() 将会抛出一个 AggregateError,其中包含了所有失败的 Promise 的错误信息。
以下是一个使用 Promise.any() 的示例代码:
// javascriptcn.com 代码示例 const promises = [ fetch('/api/data/1'), fetch('/api/data/2'), fetch('/api/data/3') ]; Promise.any(promises) .then(result => console.log(result)) .catch(error => console.log(error));
在这个示例代码中,我们使用了 Promise.any() 函数来获取三个 API 的数据,只要其中一个 API 返回了数据,就会立即输出该数据。如果所有 API 都失败了,就会输出错误信息。
Promise.allSettled()
Promise.allSettled() 函数接收一个 Promise 数组,等待所有 Promise 完成,不管成功还是失败都会返回一个数组,其中包含了每个 Promise 的结果。如果一个 Promise 失败了,结果数组中对应位置的对象将会包含一个 status 属性为 'rejected',并且还会包含一个 reason 属性,该属性包含了该 Promise 的错误信息。
以下是一个使用 Promise.allSettled() 的示例代码:
// javascriptcn.com 代码示例 const promises = [ fetch('/api/data/1'), fetch('/api/data/2'), fetch('/api/data/3') ]; Promise.allSettled(promises) .then(results => console.log(results)) .catch(error => console.log(error));
在这个示例代码中,我们使用了 Promise.allSettled() 函数来获取三个 API 的数据,并等待所有 API 返回数据。如果有 API 返回数据,就会输出一个包含每个 API 返回结果的数组。如果有 API 失败了,就会在对应位置的对象中包含错误信息。
总结
Promise.any() 和 Promise.allSettled() 函数都是 ES2021 中新增的 Promise 函数,用于解决 Promise 处理过程中的一些常见问题。使用这些函数可以简化代码,并提高代码的可读性和可维护性。开发者可以根据具体的需求来选择使用这些函数。
以上就是 Promise.any() 和 Promise.allSettled() 函数的详细介绍和示例代码。希望本文能够对前端开发者有所帮助。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/657eb61bd2f5e1655d99043d