使用Rxjs,寻找更清晰的解决方案来组合阵列流
问题描述:
我的问题不在于有工作代码,但我的解决方案组合数据流似乎很脆弱,我相信Rxjs有更好的解决方案。以下是我写的内容和示例:使用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
.ZIP有意义做出更好的解决方案。感谢您的反馈 – jamesRH