如何在RxJs 5中将项目分组为大小为n的组?

时间:2017-08-27 00:55:58

标签: javascript stream buffer rxjs5 reactivex

我需要帮助才能在无限流上对项目进行分组而不会丢失数据。

组'大小必须不大于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 ]
[]

任何帮助表示赞赏

1 个答案:

答案 0 :(得分:1)

感谢this answer我自己回答。 为了实现我的目标,我需要像这样打电话

.bufferTime(100, null, 3)