RXJS合并流返回的数据

发布于 2022-09-04 21:03:56 字数 801 浏览 10 评论 0

var time = Rx.Observable.of(['abc']);
var time2= Rx.Observable.of([122,123]);
Rx.Observable.zip(time,time2
                 , (a, b) => [...a, ...b])
  .subscribe(data => console.log("data:",data));
Rx.Observable.merge(time,time2).subscribe(data => {
  console.log("data-M:",data);
})
Rx.Observable.combineLatest(time,time2
                 , (a:Array<any>, b:Array<any>) => return a.concat(b);)
  .subscribe(data => console.log("data:",data));

需求:合并两个流返回的数组为一个数组元素,实现结果:

["abc", 122, 123]

使用RXJS的zip、combinelatest操作符可以实现,merge操作符打印的是一个一个的数据。
目前的问题是:如果两个流中的某一个流为空,比如var time = Rx.Observable.of(),则zip、combinelatest操作符方法就无法实现了。
使用merge操作符,打印的是一个一个的数据,而不是合并之后的数据。
问题:合并流返回的数据,当流不确定有值时,如何处理?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

秋叶绚丽 2022-09-11 21:03:56

http://reactivex.io/rxjs/clas...

var time = Rx.Observable.of().defaultIfEmpty([]);

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文