combineLatest2 只有第一个非空流输出

combineLatest2 with only the first non-null stream outputs

我有两个流来自 firestore,我只需要在这两个流第一次产生值时执行计算密集型操作。

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

我考虑过 .firstWhere(),但我不知道如何组合这些流来使用它。

如有任何建议,我们将不胜感激。

谢谢

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

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

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

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