RxJs: Wie eine Schleife basierend auf dem Status des beobachtbaren?

Ich versuche RxJs, um eine Schleife über einen Beobachtbaren in meinem stream, bis es in einem bestimmten Zustand, dann den stream weiter. Speziell ich die Umwandlung einer synchronen do/while-Schleife RxJs, aber ich nehme an, die gleiche Antwort könnte verwendet werden, für die eine for-oder while-Schleife sowie.

Dachte ich, könnte ich doWhile() für diese, aber es scheint, wie die condition-Funktion nicht haben Zugriff auf das Element in den stream, das scheint die Niederlage der Zweck für mich.

Ich bin mir nicht ganz sicher, was die richtige reaktive Terminologie ist für das, was ich will, aber hier ist ein Beispiel dessen, was ich werde für:

var source = new Rx.Observable.of({val: 0, counter: 3});

source.map(o => {
  o.counter--;
  console.log('Counter: ' + o.counter);

  if (!o.counter) {
    o.val = "YESS!";
  }
  return o;
})
.doWhile(o => { 
  return o.counter > 0; 
})
.subscribe(
    function (x) {
        console.log('Next: ' + x.val);
    },
    function (err) {
        console.log('Error: ' + err);   
    },
    function () {
        console.log('Completed');   
    });

Die erwartete Ausgabe wäre:

Counter: 3
Counter: 2
Counter: 1
Counter: 0
Next: YESS!
Completed

Vorausgesetzt, dies ist ein lösbares problem, ich bin unklar, wie Sie mark das "start" - von wo Sie wollen zurück, wenn Sie die Schleife.

InformationsquelleAutor JBCP | 2015-12-12
Schreibe einen Kommentar