Rxjs 累积值,如使用扫描,但可随时间重置累加器

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

我有一个可观察的对象,obs1,它表示一段时间内的数字流。我需要累加这些数字的总和,并逐步发出(也就是说,要说我需要使用
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);