筛选被拒绝的承诺
我有一个Promise
对象的数组,我想映射和筛选被拒绝的Promise
。
预期产出:
const promises = [ failedPromise, successPromise, successPromise, ]; const resolvedPromises = promises.map(promise => ???);
resolvedPromises
variables应该容纳两个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));