Ich versuche RxJS für eine einfache kurze Umfrage zu verwenden. Es muss eine Anfrage einmal alle delay
Sekunden an den Standort path
auf dem Server, endet, sobald eine von zwei Bedingungen erreicht werden: entweder der Rückruf isComplete(data)
gibt True zurück oder es hat versucht, den Server mehr als maxTries
. Hier ist der Grundcode:RxJS 5.0 "do while" wie Mechanismus
newShortPoll(path, maxTries, delay, isComplete) {
return Observable.interval(delay)
.take(maxTries)
.flatMap((tryNumber) => http.get(path))
.doWhile((data) => !isComplete(data));
}
Allerdings ist DoWhile nicht in existieren RxJS 5,0, so dass der Zustand, in dem es nur den Server maxTries
funktioniert, dank der Aufnahme() -Aufruf versuchen können, aber die isComplete
Zustand nicht Arbeit. Wie kann ich es so machen, dass das beobachtbare next() -Werte bis isComplete true zurückgibt, an welchem Punkt next() der Wert und complete() wird.
Ich sollte beachten, dass takeWhile()
funktioniert nicht für mich hier. Es gibt nicht den letzten Wert zurück, der eigentlich der wichtigste ist, da wir wissen, dass es fertig ist.
Vielen Dank!
Möglicherweise ein Duplikat: http://stackoverflow.com/questions/36007911/rxjs-poll-until-interval-done-or-correct-data-received –
Es ist kein duplizieren in dem Sinne, dass die Frage nach einem Ersatz von "doWhile" verlangt. –