筛选被拒绝的承诺

我有一个Promise对象的数组,我想映射和筛选被拒绝的Promise

预期产出:

 const promises = [ failedPromise, successPromise, successPromise, ]; const resolvedPromises = promises.map(promise => ???); 

resolvedPromisesvariables应该容纳两个successPromise promise的输出。

我将如何实现这样的algorithm?

您无法以同步方式检查标准承诺,因此您无法通过其parsing状态来过滤数组。 但是您可以使用Promise.all来获取parsing值的列表。 这是一个小技巧如何处理拒绝:

 const promises = [ Promise.resolve(1), Promise.reject(2), Promise.resolve(3) ]; const FAIL_TOKEN = {}; const resolvedPromises = Promise.all( promises.map(p => p.catch(e => FAIL_TOKEN)) ).then( values => values.filter(v => v !== FAIL_TOKEN) ); resolvedPromises.then(values => console.log(values));