ich ein Verhalten ThemaWie Ausnahme auf einem Verhalten Thema
var source = new BehaviorSubject<int>(0);
ich, dass dann Prozess zu handhaben Quelle mit so etwas wie
var withErrors = source
.Select(v =>
{
if (v == 2)
{
throw new Exception("Ouch ");
}
return v;
})
ich in einer solchen Art und Weise zu withErrors abonnieren möchten, dass ich kann die Fehler überspringen. Ein Versuch mit diesem Fang.
public IObservabe<int> SkipError(IObservable<T> source){
return source
.Catch(e=>SkipErrors(source.Skip(1));
}
und dann rufen so
var withoutErrors = SkipError(withErrors);
das Überspringen ist ein Versuch, auf das Verhalten Thema Wiederholung des letzten Fehler zu vermeiden, aber leider es nicht so funktioniert. Überspringen überspringt Fehler nicht, sondern nur über gültige Daten, so dass der Fehler vom aktuellen Zustand im Verhaltenssubjekt durchkommt.
Gibt es eine clevere Art, Skip zu schreiben, die auch Fehler überspringt. Etwas sagt mir, das ist nicht möglich, aber hoffentlich bin ich falsch
Eigentlich habe ich zu dem Schluss gekommen, dass dies unmöglich ist, zu erreichen. Da nach der RX-Spezifikation ein Observable nach dem Aufrufen von OnError nicht fortgesetzt werden kann, gibt es nichts, was Sie tun können, um den nächsten Wert zu erhalten, nachdem der OnError aufgerufen wurde. Bevor der Fehler generiert wird, muss eine Logik an der Stelle eingefügt werden. – bradgonesurfing
Korrekt. Ihre Frage steht in direktem Konflikt mit der Rx-Spezifikation. Beachten Sie, dass hier nicht das BehaviorSubject Fehler, sondern die Projektion (Select operator), nicht das ist sehr relevant. –
Ich habe festgestellt, dass, wenn ich solche Fehler propagieren möchte ich IObservable> wo Exceptional wie https://gist.github.com/bradphelan/6154972 definiert ist und im Wesentlichen ein Container ist, die entweder eine Ausnahme halten kann oder ein Wert –
bradgonesurfing