rxjs 并发后合并流
需求
异步得到一个列表,返回的是一个数组[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)
})
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
按你的需求返回[2,4,6,8,10]应该是: