RXJS буфер, наблюдаемый с максимальным и минимальным размером - PullRequest
0 голосов
/ 21 мая 2018

Я довольно нуб в 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

1 Ответ

0 голосов
/ 22 мая 2018

Вы можете использовать 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)

...