2017-08-27 28 views
0

我需要帮助将无限数据流上的项目分组而不会丢失数据。如何在RxJs 5中将项目分组为大小为n的组?

组的大小必须不大于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

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

.bufferTime(100, null, 3) 
相关问题