具有最大和最小大小的 RXJS 缓冲区可观察
RXJS buffer observable with max and min size
我对 rxjs 相当菜鸟。
我想要一个缓冲区,它基本上从小尺寸开始(minSize),直到达到某个限制 maxSize。
buffer(minSize, maxSize, startEvery)
所以它应该发出例如(rxjs 6 语法)。
source(1,2,3,4,5,6,7,8).pipe(buffer(2, 4, 1))
.subscribe( res => console.log(res));
-> [1,2]
-> [1,2,3]
-> [1,2,3,4]
-> [2,3,4,5]
-> [3,4,5,6]
and so on
您可以使用 scan
:
of(1,2,3,4,5,6,7,8).pipe(
scan((acc, cur) => [...acc, cur].slice(-4), [])
).subscribe(arr => console.log(arr))
那将输出:
[1]
[1,2]
[1,2,3]
[1,2,3,4]
[2,3,4,5]
[3,4,5,6]
如果你想摆脱 [1]
使用 scan(), skip(1)
我对 rxjs 相当菜鸟。 我想要一个缓冲区,它基本上从小尺寸开始(minSize),直到达到某个限制 maxSize。
buffer(minSize, maxSize, startEvery)
所以它应该发出例如(rxjs 6 语法)。
source(1,2,3,4,5,6,7,8).pipe(buffer(2, 4, 1))
.subscribe( res => console.log(res));
-> [1,2]
-> [1,2,3]
-> [1,2,3,4]
-> [2,3,4,5]
-> [3,4,5,6]
and so on
您可以使用 scan
:
of(1,2,3,4,5,6,7,8).pipe(
scan((acc, cur) => [...acc, cur].slice(-4), [])
).subscribe(arr => console.log(arr))
那将输出:
[1]
[1,2]
[1,2,3]
[1,2,3,4]
[2,3,4,5]
[3,4,5,6]
如果你想摆脱 [1]
使用 scan(), skip(1)