Promise.allSettled 兼容方法
- 基于 Promise.all 实现兼容,运行环境需支持 Promise API,原生方法参考此处。
/**
* [Polyfill] Promise.allSettled
* @param {Array} promises 捕获的 Promise
* @return {Promise} 按顺序捕获的所有结果
*/
function PromiseAllSettled(promises = []) {
const resolveHandler = value => ({ status: 'fulfilled', value })
const rejectHandler = reason => ({ status: 'rejected', reason })
return Promise.all(promises.map(p => Promise.resolve(p).then(resolveHandler, rejectHandler)))
}
// Polyfill
Promise.allSettled || (Promise.allSettled = PromiseAllSettled)