У меня есть одна наблюдаемая, obs1 , которая представляет поток чисел с течением времени. Мне нужно накапливать сумму таких чисел и постепенно генерировать ее (т. Е. Долго говорить, что мне нужно использовать оператор scan
).
Затем существует вторая наблюдаемая, obs2 , которая представляет собой своего рода «время сброса». Другими словами, когда obs2 излучает, я должен сбросить установленный мной аккумулятор на obs1 и начать суммирование с 0.
Я думаю, что смог достичь желаемого поведения с помощью следующего кода, но я не уверен, что это правильный способ сделать это (мне это как-то пахнет)
const obs1 = Observable.interval(100).mapTo(1).take(100);
const obs2 = Observable.interval(700).take(10);
obs1.pipe(
windowWhen(() => obs2),
mergeMap(d => d.pipe(scan((acc, one) => acc + one, 0)))
)
.subscribe(console.log);
Есть предложения по улучшению?