Wie kann ein Observable angehalten werden, ohne die ausgestrahlten Objekte zu verlieren?
Ich habe einObservable
das jede Sekunde ein Häkchen abgibt:
Observable.interval(0, 1, TimeUnit.SECONDS)
.take(durationInSeconds + 1));
Ich möchte dieses Observable anhalten, damit es keine Zahlen mehr ausgibt, und es bei Bedarf fortsetzen.
Es gibt einige Fallstricke:
laut demObservable
Javadoc,interval
Operator unterstützt keinen Gegendruckas RxJava-Wiki über Gegendruck hat einen Abschnitt überallstack-Blockierung als Durchflussregelungsalternative zum Gegendru:Eine andere Möglichkeit, mit einem überproduktiven Observable umzugehen, besteht darin, den Callstack zu blockieren (den Thread zu parken, der das überproduktive Observable regelt). Dies hat den Nachteil, dass es dem „reaktiven“ und nicht blockierenden Modell von Rx widerspricht. Dies kann jedoch eine praktikable Option sein, wenn sich das problematische Observable auf einem Thread befindet, der sicher blockiert werden kann. Derzeit macht RxJava keine Operatoren verfügbar, um dies zu vereinfachen.
Gibt es eine Möglichkeit, ein @ anzuhalteinterval
Beobachtbar? Oder sollte ich mein eigenes 'ticking' implementieren, das mit etwas Gegendruckunterstützung beobachtbar ist?