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.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage