den Code Betrachten unterReactiveSwift: Wiederholen Sie bis zu n-mal, und führen Sie dann einen Code
func test() -> SignalProducer<String, Error> {
return SignalProducer<String, Error> { observer, _ in
...
}
}
test()
.on(value: { s in
print(s)
})
.retry(upTo: 2)
.start()
}
Gibt es eine eingebaute Möglichkeit, n-mal zu wiederholen, dann (wenn sie alle Versuche gescheitert) ausführen einigen Rückruf ?
Es ist natürlich möglich, einen lokalen Zähler einzuführen und die Fehler in .on(failed: _)
zu zählen und dann etwas zu tun, wenn der Zähler gleich n + 1 ist, aber gibt es einen anderen Weg, es zu tun?
Was hier wichtig ist, ist die Reihenfolge, das Hinzufügen der '.retry' vor dem' .on' handlers übergibt nur den letzten Fehler (in diesem Fall den gewünschten Effekt). Das habe ich irgendwie vermisst. – Buddy
Ja, jeder Operator erstellt tatsächlich ein neues Signal/Produzent, der den vorherigen mit etwas Logik oder Transfomation umschließt. Also wird "Wiederholen" in Ihrem ursprünglichen Code den Hersteller erneut versuchen, wie durch den gesamten Code definiert, der vor ihm liegt, einschließlich der On-Side-Effekte. – jjoelson