объединить последние два только с ненулевыми выводами потока - PullRequest
0 голосов
/ 29 марта 2019

У меня есть два потока, поступающих из хранилища, и мне нужно выполнять вычислительную операцию только в первый раз, когда эти два потока выдают значения.

Я рассмотрел combineLatest2(), но, насколько я могу судить, это будет выполняться каждый раз, когда потоки выдают результат (а не только в первый раз).

Я рассмотрел .firstWhere(), но я не могу понять, как объединить потоки, чтобы использовать это.

Любые предложения будут оценены.

Спасибо

Ответы [ 2 ]

0 голосов
/ 30 марта 2019

Ваши ответы помогли мне найти полезное решение.

combineLatest2(stream1.take(1), stream2.take(1), (s1, s2) {
// computationally intensive operation
}).listen((_) => {});
0 голосов
/ 29 марта 2019

Вы можете использовать forkJoin для этого, если вы добавите take (1) к входящим потокам. Тогда потоки завершатся после одного ввода, и будет запущен forkJoin.

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