CombineLatest2仅带有第一个非空流输出

时间:2019-03-29 03:08:14

标签: rxjs rxdart

我有两个来自firestore的流,并且仅在这两个流第一次产生值时才需要进行计算密集型操作。

我已经考虑过combineLatest2(),但据我所知,它将在每次流产生输出时(不仅是第一次)执行。

我已经考虑过.firstWhere(),但是我不知道如何结合流来使用它。

任何建议将不胜感激。

谢谢

2 个答案:

答案 0 :(得分:0)

如果在进入的流中添加take(1),则可以使用forkJoin。然后,流将在输入一次后完成,并且forkJoin将触发。

forkJoin(
    stream1$.pipe(take(1)),
    stream2$.pipe(take(1))
).pipe(
    // Do your computationally intensive operation 
);

答案 1 :(得分:0)

您的回复帮助我找到了一个有用的解决方案。

combineLatest2(stream1.take(1), stream2.take(1), (s1, s2) {
// computationally intensive operation
}).listen((_) => {});