Rxjs 累积值,如使用扫描,但可随时间重置累加器
我有一个可观察的对象,obs1,它表示一段时间内的数字流。我需要累加这些数字的总和,并逐步发出(也就是说,要说我需要使用Rxjs 累积值,如使用扫描,但可随时间重置累加器,rxjs,Rxjs,我有一个可观察的对象,obs1,它表示一段时间内的数字流。我需要累加这些数字的总和,并逐步发出(也就是说,要说我需要使用scan运算符还有很长的路要走) 然后还有第二个可观察的对象,obs2,表示某种“重置时间”。换句话说,当obs2发射时,我必须重置我在obs1上设置的累加器,并从0开始求和 我想我已经能够通过下面的代码达到我想要的行为,但我不确定这是正确的方法(对我来说有点异味) 关于如何改进它有什么建议吗?也许我一直在寻找类似的建议 const obs1 = Observable.inte
scan
运算符还有很长的路要走)
然后还有第二个可观察的对象,obs2,表示某种“重置时间”。换句话说,当obs2发射时,我必须重置我在obs1上设置的累加器,并从0开始求和
我想我已经能够通过下面的代码达到我想要的行为,但我不确定这是正确的方法(对我来说有点异味)
关于如何改进它有什么建议吗?也许我一直在寻找类似的建议
const obs1 = Observable.interval(100).mapTo(1).take(100);
const obs2 = Observable.interval(700).take(10);
function scanReset(seed) {
return obs1.pipe(
scan((acc, one) => acc + one, seed)
)
}
obs2.pipe(
switchMap(() => scanReset(0))
)
.subscribe(console.log);
const obs1 = Observable.interval(100).mapTo(1).take(100);
const obs2 = Observable.interval(700).take(10);
function scanReset(seed) {
return obs1.pipe(
scan((acc, one) => acc + one, seed)
)
}
obs2.pipe(
switchMap(() => scanReset(0))
)
.subscribe(console.log);