Mein Anwendungsfall ist die Zuordnung eines Observable zu reduktiven Aktionen von Erfolg und Misserfolg. Ich mache einen Netzwerkanruf (mit einer Funktion, die verspricht), wenn es erfolgreich ist, muss ich eine Erfolgsaktion weiterleiten, wenn es fehlschlägt als eine Fehleraktion. Das Observable selbst soll weitermachen. Für alle, die ich suchen konnte, haben RxJS keinen Mechanismus, um den Fehler zu finden und das Original erneut zu versuchen. Ich habe folgende Lösung in meinem Code, die ich nicht mit glücklich bin:RxJS fangen ** und ** wiederholen ein Observable
error$ = new Rx.Subject();
searchResultAction$ = search$
.flatMap(getSearchResultsPromise)
.map((resuls) => {
return {
type: 'SUCCESS_ACTION',
payload: {
results
}
}
})
.retryWhen((err$) => {
return err$
.pluck('query')
.do(error$.onNext.bind(error$));
});
searchErrorAction$
.map((query) => {
return {
type: 'ERROR_ACTION',
payload: {
query,
message: 'Error while retrieving data'
}
}
});
action$ = Observable
.merge(
searchResultAction$,
searchErrorAction$
)
.doOnError(err => console.error('Ignored error: ', err))
.retry();
action$.subscribe(dispatch);
d.h erstelle ich ein Thema, und drücken Sie Fehler in diesem Thema und erstellen eine beobachtbare von Fehleraktionen aus, dass.
Gibt es eine bessere Alternative in RxJS, die ich vermisse? Grundsätzlich möchte ich eine Benachrichtigung über den aufgetretenen Fehler ausgeben und dann mit dem fortfahren, was das Observable bereits tut.
Ah! Das verschachtelte Observable. Warum habe ich nicht daran gedacht! Ich denke, es wird mehr Zeit brauchen, um sich an die Welt der Observablen zu gewöhnen. Vielen Dank. – channikhabra