需求
异步得到一个列表,返回的是一个数组[1,2,3,4,5]
再次异步并发请求携带数组中参数
返回[2,4,6,8,10]
问题
如何将第一次异步请求得到的参数并发出去,最后合并成一个流?
function mock () {
return new Promise(res => {
setTimeout(_ => {
res({
code: 1,
ids: [
1, 2, 3, 4, 5
]
})
}, 200)
})
}
function asyncData (id) {
console.log(id)
return new Promise(res => {
setTimeout(_ => {
res({
id: id * 2
})
}, 300)
})
}
//我的错误方式
Rx.Observable.from(mock())
.map(v => v.ids)
.mergeMap(v => Rx.Observable.from(v.map(id=>asyncData(id))))
.subscribe(v => {
console.log(v)
})
按你的需求返回[2,4,6,8,10]应该是: