Ich habe eine sehr grundlegende Frage zu @ngrx-Effekten: Wie ignoriere ich einen Fehler, der während der Ausführung eines Effekts auftritt, so dass er die zukünftige Effektausführung nicht beeinflusst?ngrx effects error handling
Meine Situation ist wie folgt: Ich habe eine Aktion (LOGIN) und einen Effekt auf diese Aktion zu hören. Wenn innerhalb dieses Effekts ein Fehler auftritt, möchte ich ihn ignorieren. Wenn LOGIN ein zweites Mal nach diesem Fehler ausgelöst wird, sollte der Effekt ein zweites Mal ausgeführt werden.
Mein erster Versuch, dies zu tun war:
@Effect()
login$ = this.actions$
.ofType('LOGIN')
.flatMap(async() => {
console.debug('LOGIN');
// throw an error
let x = [];x[0]();
})
.catch(err => {
console.error('Error at login', err);
return Observable.empty();
});
Dispatching LOGIN das erste Mal wirft und fängt den Fehler, wie erwartet. Wenn ich jedoch LOGIN ein zweites Mal nachschicke, passiert nichts; Der Effekt wird nicht ausgeführt.
Deshalb habe ich versucht, die folgenden:
.catch(err => {
return this.login$;
});
, aber dies führt zu einer Endlosschleife ... Wissen Sie, wie der Fehler zu fangen, ohne danach Wirkung Ausführung zu verhindern?
Ich weiß nicht, NGRX aber man kann wahrscheinlich nur '.retry()' auf dem Strom statt zu kontrollieren. – Gluck