Rxjs 为什么countBuffer(2,3)每三次省略一次值

Rxjs 为什么countBuffer(2,3)每三次省略一次值,rxjs,Rxjs,我不明白为什么每三分之一的价值都被忽略了 const source = Rx.Observable.interval(1000); const bufferThree = source.bufferCount(2, 3); const subscribe = bufferThree.subscribe(val => console.log('Buffered Values:', val)); 如果是bufferCount(2,1)的情况,则每个缓冲区还将包括以前的值: Buffered

我不明白为什么每三分之一的价值都被忽略了

const source = Rx.Observable.interval(1000);
const bufferThree = source.bufferCount(2, 3);
const subscribe = bufferThree.subscribe(val => console.log('Buffered Values:', val));

如果是bufferCount(2,1)的情况,则每个缓冲区还将包括以前的值:

Buffered Values: (2) [0, 1]
Buffered Values: (2) [1, 2]
Buffered Values: (2) [2, 3]
我认为StartBuffere的每个值都将被包含到下一个输出中

关于

缓冲计数(X,Y)

X是缓冲区的大小
Y是下一个缓冲区的开始

因此
bufferCount(2,3)
意味着前两个值将被缓冲,下一个缓冲区将在第三个值之后启动。
结果,第三个值被丢弃

bufferCount(2,1)
是相同的,只是没有值被省略,而是使用了两次。
缓冲区有两个大值,但在每个值之后都会启动一个新的缓冲区。

因此,您有两个缓冲区同时运行。

startbuffery
将每隔
n
th项启动一个新的缓冲区。martin是正确的。使用这个特殊的用法,你们有什么想要达到的行为吗?谢谢大家。我只是在学习rxjs,想很好地理解它。谢谢JanRecker。还有一个问题。所以我们可以说,两个缓冲区可以同时工作,但是停止发出值的缓冲区​​是否清除?否,它的“emitted”(表示沿流提供给订阅者),并且不再使用此特定缓冲区。”bufferCount(X,Y)创建所有Y发射一个新缓冲区,它被X emittes的值填充,然后缓冲区沿流发送给订阅者。