RxJS 怎么合并流返回的数据?
例如
'use strict';
const Rx = require('rx');
const x = Rx.Observable
.just('x')
.flatMap((data) => {
const subject = new Rx.Subject();
setTimeout(() => {
subject.onNext([data]);
}, 1000)
return subject;
})
const y = Rx.Observable
.just('y')
.flatMap((data) => {
const subject = new Rx.Subject();
setTimeout(() => {
subject.onNext([data]);
}, 3000)
return subject;
})
Rx.Observable.zip(x, y)
// .map(([x, y]) => {
// return x.concat(y);
// })
.subscribe((data) => {
console.log(data);
}, (err) => {
console.log(err);
});
除了用 map 重构返回的数据结构之外,还有什么更加好的办法合并呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
楼上的答案之所以不行,是因为
forkJoin
是 串行 地结合每个 Observable 的最后一个 emit 的值。既然要串行,意思就是
a
结束了才到b
,b
结束了才到c
。而题目中定义的
x
和y
都没有明确地定义其complete
,所以forkJoin
不知道x
什么时候结束,从而无法进行下去。所以,想要楼上的答案可行的话,明确地给每个 subject 加上其
complete
方法:然而:
x
和y
为什么要用 subject 而不用 Observable ?为什么要把
x
和y
的值放在一个数组里面,目的是什么?