2017-08-27 1 views
0

Ich brauche Hilfe, um Elemente im unendlichen Stream ohne Datenverlust zu gruppieren.Wie gruppiere ich Elemente in Gruppen der Größe n in RxJs 5?

Die Gruppengröße darf nicht größer als n Elemente sein. Wenn während einiger Zeit keine Gegenstände kamen, dann ist die Größe der gegenwärtigen Gruppe möglicherweise kleiner als n.

diesen Code Versuch:

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)) 

gibt es folgendes Ergebnis:

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

Aber ich brauche:

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

Jede Hilfe willkommen

Antwort

1

Dank this answer Ich antworte mir selbst. Um mein Ziel zu erreichen, muss ich so anrufen

.bufferTime(100, null, 3) 
Verwandte Themen