假设我有一系列承诺,itemsPromises
。其中一些会失败,其中一半可能会成功。
如果我试图得到这样的答案:
const itemsPromises = raw.map(item =>
axios({
method:'get',
url:`https://www.omdbapi.com/?apikey=${apikey}&i=${item.imdbID}`
})
)
const itemsResponses = await Promise.all(itemsPromises)
......我需要等待很长时间,直到失败的承诺超时,最终。我可能会得到5-6次成功的回复,但无法访问它们,直到所有的承诺得到解决或拒绝。
我可以将这个Promises数组转换为一些可迭代的Observable形式,这样每次我得到一个成功的响应,我都可以将它传递给我的应用程序并使用它吗?
答案 0 :(得分:3)
合并运算符允许您同时执行每个http调用
Rx.Observable.merge(null,
raw.map(item =>
Rx.Observable.fromPromise(axios({
method: 'get',
url: `https://www.omdbapi.com/?apikey=b54e8554&i=${item.imdbID}`
})).catch(err=>Rx.Observable.of({err,item}))
)).subscribe()