Ich studiere Rx.NET und in dem folgenden Beispielcode versuche ich eine asynchrone Aufgabe durchzuführen, die beobachtet, dass Datum Zeitauswahlwert Ereignis geändert wird. Der onNext läuft perfekt, aber onError und onComplete nicht. Was mache ich falsch?Rx.NET feuert onError noch onComplete nicht
Antwort
Wenn Sie Rx nicht verwenden und einfach einen Event-Handler anhängen, kann Ihnen dieses Ereignis nicht sagen, dass es abgeschlossen ist. Der Handler wird davon ausgehen, dass es immer mehr Ereignisse geben wird, selbst wenn es nur einmal aufgerufen wird (denke an das Loaded-Ereignis in js land). Wenn Sie das Ereignis in eine Observable konvertieren, sehen Sie dasselbe Verhalten. Die Rx-Bibliothek kann nicht feststellen, ob der Ereignisstrom beendet wurde.
Sie können immer die Take-Methode verwenden, um die Anzahl der Artikel zu begrenzen, die Ihr Abonnent erhält. Hoffe, das hilft beantworten, warum nie die Observablen
MouseMove.TakeUntil(MouseUp).Subscribe(...);
DocLoad.Take(1).Subscribe(...);
Was die OnError enden nie aufgerufen wird - wenn Ihre Teilnehmer einen Fehler wirft, dann ist dies ein Problem mit Ihrem Teilnehmer, nicht die beobachtbaren selbst und es würde keinen Sinn machen, Lassen Sie alle anderen Abonnenten wissen, dass ein Subgauner ging.
OnError wird normalerweise verwendet, um anzuzeigen, dass ein Fehler beim Abrufen eines Werts in der Sequenz aufgetreten ist. z.B.
Observable.Create(sub => {
try {
var res = SomethingThatCanThrow();
sub.OnNext(res);
sub.OnCompleted();
} catch (Exception ex) {
sub.OnError(ex);
}
return Disposable.Empty;
});
- 1. Uploadify: onComplete feuert nicht in Chrome und IE
- 2. Wann feuert Phoenix's Socket.js die OnConnError vs OnError Callbacks?
- 3. jquery feuert ab ohne bein erzählt noch
- 4. Fancybox onComplete-Funktion läuft nicht
- 5. Beobachter <Void> 's OnNext und onComplete sind nicht
- 6. Javascript onerror Ereignis funktioniert nicht
- 7. componentDidUpdate feuert nicht
- 8. JQuery Class Selector feuert immer noch nach removeClass
- 9. SocketException Abbestellung Anfrage ohne onError
- 10. $ viewContentLoaded feuert nicht
- 11. jQuery Last feuert nicht
- 12. UIButton TapGestureRecognizer feuert nicht
- 13. OnClick feuert nicht immer
- 14. DropDownList OnSelectedIndexChanged feuert nicht
- 15. Reagieren onMouseOver feuert nicht
- 16. Android setOnEditorActionListener() feuert nicht
- 17. Xor feuert nicht
- 18. WPF DispatcherTimer feuert nicht
- 19. swift - viewDidAppear feuert nicht
- 20. Rx.Net - Aktienkursänderungen holen und verarbeiten sie
- 21. CustomValidator ServerValidate Methode feuert nicht
- 22. Android Edittext keypress feuert nicht
- 23. Gibt es Rx.NET für .NET Core?
- 24. oncomplete Ereignis für dojo.place
- 25. RXJS Observable doSomething onComplete
- 26. Oncomplete Ereignis von actionFunction funktioniert nicht
- 27. Scala Future tritt nicht onComplete() ein
- 28. A4J: Befehlsschaltfläche ternary Operator funktioniert nicht oncomplete
- 29. Webcam aktualisieren image onerror
- 30. onerror Handhabung mit VS2008
Warum erwarten Sie, dass 'onError' oder' onCompleted' ausgelöst werden? Nichts beendet deinen Ereignisstrom oder wirft Fehler. – Jacob
Wenn ich einen neuen Exception ("was auch immer") in den onNext hinzufügen, wird es auf onErrror nicht aufholen. Bezüglich onCompleted wie kann ich das Observable beenden, wenn es nicht wegwerfbar ist? Ich habe viele Tutorials und Codebeispiele gesehen, aber ich habe nie eine gute Erklärung dafür gefunden, wann jede Aktion aufgerufen wird. –