Как сгруппировать элементы в группы размера n в RxJs 5?

Мне нужна помощь, чтобы сгруппировать элементы в бесконечном потоке без потери данных.

Размер групп не должен превышать n элементов. Если в течение какого-то времени не приходило ни одного товара, то размер текущей группы может быть меньше n.

Попытка этого кода:

Observable.create(observer => {
    setTimeout(() => observer.next([1]),            90)
    setTimeout(() => observer.next([2, 3]),        120)
    setTimeout(() => observer.next([4, 5, 6]),     160)
    setTimeout(() => observer.next([7, 8, 9, 10]), 310)
    setTimeout(() => observer.next([11]),          360)
})
.flatMap(xs => xs)
.bufferTime(100, 100, 3) // group every 100 ms or by 3, whatever comes first
.takeUntil(Observable.timer(590))
.subscribe(x => console.log(x))

это дает следующий результат:

[ 1 ]
[ 2, 3, 4 ]
[]
[ 7, 8, 9 ]
[ 11 ]
[]

Но мне нужно:

[ 1 ]
[ 2, 3, 4 ]
[ 5, 6 ]
[]
[ 7, 8, 9 ]
[ 10, 11 ]
[]

Любая помощь приветствуется


person Ali    schedule 27.08.2017    source источник


Ответы (1)


Благодаря этому ответу я отвечаю сам себе. Для достижения моей цели мне нужно позвонить так

.bufferTime(100, null, 3)
person Ali    schedule 27.08.2017