Wie erstelle ich einen Rx (RxJS) -Stream, der zwischen Einzelposten- und Stapelmodus umgeschaltet werden kann?
Ich habe einen Rx-Stream, der ein ausgehender Änderungs-Feed von einer bestimmten Komponente ist.
elegentlich möchte ich ein @ eingeben könn Batch-Modus im Stream, sodass Elemente an @ übergeben werd onNext akkumulieren und werden nur beim Verlassen des Batch-Modus weitergegeben.
ormalerweise leite ich einzelne Elemente durch den Stream:
stream.onNext(1);
stream.onNext(2);
Es gibt eine 1-zu-1-Zuordnung zwischen den an @ übergebenen Elemente onNext und die im @ empfangenen Elemenabonniere, daher führt das vorherige Snippet zu zwei Aufrufen vonabonniere mit den Werten 1 und 2.
Das Batch-Modus Ich suche vielleicht funktioniert so etwas:
stream.enterBatchMode();
stream.onNext(1);
stream.onNext(2);
stream.exitBatchMode();
In diesem Fall möchte ichabonniere, um nur einmal mit dem einzelnen verketteten Array [1, 2] aufgerufen zu werden.
Um es noch einmal zu wiederholen, ich benötige den Batch-Modus nur manchmal, zu anderen Zeiten leite ich die nicht verketteten Elemente durch.
Wie kann ich dieses Verhalten mit Rx erreichen?
HINWEIS: Früher habe ich Arrays durch @ geleite onNext obwohl dies meistens so ist, dass der Typ im Einzelmodus und im Batch-Modus gleich bleibt.
Z.B
stream.onNext([1, 2, 3]);
stream.onNext([4, 5, 6]);
Subscribe empfängt [1, 2, 3] und dann [4, 5, 6], aber im Batch-Modus empfängt subscribe die verketteten Ergebnisse [1, 2, 3, 4, 5, 6].
So wenn du es so betrachtest, ist es eher wie nicht verkettet und verkettet Modi (im Gegensatz zuIndividuel und batch-mode). Aber ich denke das Problem ist sehr ähnlich.