有没有一种方法可以只获得已解决的承诺的价值



我正在调用多个服务,其中包括网络调用和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);
});

最新更新