Select 到目前为止发出的 ReplaySubject 值
Select ReplaySubject values emitted untill now
是否有可靠的解决方案来获取 ReplaySubject 中当前缓冲的值的快照?
我想到了这样的方法,但不确定这个解决方案有多可靠:
replaySubject.pipe(
takeUntil(timer(10).pipe(take(1)))
)
上面的计时器因素对我来说似乎是错误的,因为如果所有值都在给定时间内正确发出,我无法保证(这适用于具有很多值的重播主题)。
我认为这可以是一种方法:
replay
.pipe(
buffer(timer(0)),
take(1)
)
.subscribe(a => {
console.log(`This is one time value ${a}`);
});
ReplaySubject
,当有新订阅者注册时,会发出its values synchronously:
for (let i = 0; i < copy.length && !subscriber.closed; i += infiniteTimeWindow ? 1 : 2) {
subscriber.next(copy[i] as T);
}
出于这个原因,我们正在使用 buffer(timer(0))
:在 buffer
的通知程序(timer(0)
)发出时,值已经添加到 buffer
的数组。因此,它将能够发出所有 ReplaySubject
的累加值。
是否有可靠的解决方案来获取 ReplaySubject 中当前缓冲的值的快照?
我想到了这样的方法,但不确定这个解决方案有多可靠:
replaySubject.pipe(
takeUntil(timer(10).pipe(take(1)))
)
上面的计时器因素对我来说似乎是错误的,因为如果所有值都在给定时间内正确发出,我无法保证(这适用于具有很多值的重播主题)。
我认为这可以是一种方法:
replay
.pipe(
buffer(timer(0)),
take(1)
)
.subscribe(a => {
console.log(`This is one time value ${a}`);
});
ReplaySubject
,当有新订阅者注册时,会发出its values synchronously:
for (let i = 0; i < copy.length && !subscriber.closed; i += infiniteTimeWindow ? 1 : 2) {
subscriber.next(copy[i] as T);
}
出于这个原因,我们正在使用 buffer(timer(0))
:在 buffer
的通知程序(timer(0)
)发出时,值已经添加到 buffer
的数组。因此,它将能够发出所有 ReplaySubject
的累加值。