我正在调用多个服务,其中包括网络调用和JavaScript应用程序中的其他异步服务。
起初,我一个接一个地援引这些承诺。从长远来看,由于我调用了更多的服务,所以维护起来越来越困难。
我在网上读到,我们可以使用Promise.all((对所有承诺进行分组,并一次执行所有内容。
问题是,如果其中任何一个承诺被拒绝,所有其他承诺也被拒绝,这不是我需要的。
我在一个状态面板中工作,在那里我需要ping多个服务,并显示服务是否启动。通过使用Promise.all,它并没有以我希望的方式工作。
尝试了另一个方法Promise.any((,但它只在解析任何一个时解析。
看了一下MDN文档,有很多promise函数,这对我来说太棒了,因为我是JavaScript的初学者。
目前,我已经创建了一个非常自己的服务,负责调用所有承诺并计算响应。有更干净的方法吗?
使用Promise.allSettled
,然后过滤掉那些未完成的内容。
Promise.allSettled([
Promise.resolve(3),
Promise.reject(4),
Promise.resolve(5),
])
.then((results) => {
const allFulfilledValues = results
.filter(r => r.status === 'fulfilled')
.map(r => r.value);
console.log(allFulfilledValues);
});