Das Problem ist, das doppelte Looping Verhalten mit RX zu emulieren:Gebäude doppelt unendliches Wahlverhalten in RX
while True:
try:
token = get_token()
while True:
try:
value = get_value_using_token(token)
do_something(value)
except:
break
except:
break
Es wäre sauber, wenn die beiden Schleifen mit zwei Observablen ersetzt werden, wobei ein als Beobachter der äußere, während do_something(value)
durch einen Beobachter allein ersetzt werden kann. Alle Ausnahmen können ebenfalls gut gehandhabt werden. Die äußere Schleife muss blockiert werden, die innere Schleife jedoch möglicherweise nicht, da ich versuche, die äußere Schleife zu verwenden, um Ausnahmen mithilfe der Wiederholungsfunktion mit einer Backoff-Funktion zu behandeln.
Bisher kann ich unter Verwendung einer Sequenz aufbauen:
Observable.from_iterable(value for value in iter(get_token, None))
.subscribe(do_something)
aber wie kann ich eine ähnliche Struktur machen Modus für die Außen in blockiert?
Danke. Wiederholter Operator gibt jedoch den gleichen Wert zurück. Was ich brauche, ist den Funktionsaufruf zu wiederholen, da weder 'get_token' noch' get_value_using_token' eine reine Funktion ist. –
Sorry, natürlich. Dann können Sie Observable.Return zu RxPy's Äquivalenz von 'Observable.Start' ändern oder Sie können Observable.Defer (Obs.Return (GetToken())) verwenden, damit es wieder faul ausgewertet wird. –