使用 Rxjs,寻找一种更干净的解决方案来组合数组流

Using Rxjs, looking for a cleaner solution for combining array streams

本文关键字:解决方案 数组 组合 一种 寻找 Rxjs 使用      更新时间:2023-09-26

我的问题不在于拥有工作代码,而是我组合数组流的解决方案似乎很脆弱,我相信 Rxjs 有更好的解决方案。 以下是我所写内容的示例:

var all$ = Rx.Observable.combineLatest(
    basicArray$, fastArray$, slowArray$,
    function(basic, fast, slow){
        return basic.concat(fast).concat(slow);
});

我的目标是三进一出>只有当这三个都是新的时。

使用实用程序(如 lodash 的 flatten 方法),您可以使用以下内容完成相同的操作:

var all$ = Rx.Observable.combineLatest(basicArray$, fastArray$, slowArray$)
    .map(_.flatten);

但是,看看您的最后一条评论,我认为您的代码没有按预期工作。由combineLatest生成的流将在发出任何流时立即发出一个新项目。

根据您的描述,zip运算符可能更合适:https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/operators/zip.md