记录一个面试题,实现Promise.allSettled。

allSettled应该是去年被写入了MDN,作用和all类似,并发进行异步,区别在于all遇到失败就会触发reject走到catch子句或者throw掉,而allSettled会将结果都保留住,哪怕遭遇失败,最后集中返回到then子句。node在v12版本中支持了对这个polyfill的支持,目前大部分浏览器上也可以支持这个接口。

实现

module.exports = function(prommises) {
  return Promise.all(promise.map(p => p.then((resp) => ({ status: 'fulfilled', value: resp })).cache((err) => ({ status: 'rejected', err }))));
}

感觉这个接口都能进标准。。。