2017-04-07 58 views
0

我需要一個功能,可以使用Array<Promise<Object>>並返回Promise<Array<Object>>Javascript Promises - get Array of non rejected

它會類似於Promise.all(),但它不會在reject上失敗,它只是忽略它們,然後繼續前進。

+0

和你的代碼是什麼? – funcoding

+1

你確定你不是說'陣<無極>''到無極<陣列>'? – Thomas

+0

什麼是承諾<…>? – Bergi

回答

2

可以使用Promise.allArray<Promise<X>>變換爲Promise<Array<X>>

要忽略拒絕,只是處理,並將處理返回一些空值,而不是:

Promise.all(promises.map(p => p.catch(err => undefined))) 

如果你有興趣完全過濾出來,用this approach該後處理數組。

0

我們使用@Bergi描述的解決方案,您可以看到它here

略微簡化的例子如下:

function preloadImages(imagePromises) { 
    const IMAGE_LOAD_FAIL = null; 

    const promises = imagePromises 
    .map(image => image.catch(err => IMAGE_LOAD_FAIL)); 

    return Promise.all(promises) 
    .then(images => images.filter(image => image !== IMAGE_LOAD_FAIL)); 
}