Nicht erfasste (bei Versprechen)
Ich weiß, das problem ist üblich. Ich bin mit es6 verspricht, und ich habe mehrere Ebenen.
Zur Laufzeit, wenn ich nicht fangen ein Versprechen, ich habe Uncaught (in promise)
in meiner Konsole. Aber die Tatsache ist, dass ich es fangen unteren in meinem code.
Schnell Vereinfachtes Beispiel :
LoginApi.js
var loginDaoCall = loginDao.login(username, password);
loginDaoCall
.then(function (res) {
store.dispatch(loginSuccess());
log.log("[loginApi.login] END");
})
.catch(function (err) {
store.dispatch(loginFail());
errorUtils.dispatchErrorWithTimeout(errorLogin);
log.log(err);
});
return loginDaoCall;
loginContainer.js
loginApi.login(user, password).then(() => {
//Change here instead of in render so the user can go back to login page
this.props.history.push(baseUrlRouter + "test");
}); //<- Error here cause I don't CATCH the promise, but I do catch it in my loginapi.js
Ich weiß, dass ich fangen konnte nichts tun, aber eh. Ich könnte auch tun, die Geschichte schieben, was in meinem API-Schicht, aber es ist nicht seine Verantwortung.
Wie kann ich den Fehler vermeiden, in meine Konsole? Gibt es eine Möglichkeit? Ich bin sogar denken, es zu verlassen, wie diese.
- ist es ein Fehler oder eine Warnung?
- Es wird gezeigt, wie ein Fehler, aber es ist eine Warnung, wie es nicht etwas zu brechen. Ich hasse es, Warnung/Fehler in meiner Konsole nicht von mir kommen. Es ist nicht gerechtfertigt, da es nicht eine schlechte Praxis imho
- vielleicht ist Ihr eigenen code? errorUtils.dispatchErrorWithTimeout(errorLogin); log.log(err);
- Nein, die Sache ist die, es ist eine "nicht behandelte Ablehnung", wenn ich fangen Sie das abgelehnt Versprechen in meinem loginContainer, ich habe auch keine Fehlermeldung. Es ist eine Konsole.kommen die Fehler von es6-promises.
- und es gibt keine Fehler geworfen in Ihren Fang? welcher Fehler ist es?
- Ja, es ist ein Fehler, aber seine spezifischen meinem code. Meine loginDao ablehnen, etwas (ein Objekt tatsächlich), wenn die Authentifizierung fehlschlägt. edit :Uncaught (bei Versprechen) Object {code: -32001, Meldung: "Invalid login/password"}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dein problem ist, dass du
return
ing die abgelehntloginDaoCall
, nicht das Versprechen, in dem der Fehler wurde bereits behandelt.loginApi.login(user, password)
in der Tat eine Rückkehr abgelehnt Versprechen, und noch während das gehandhabt wurde, in einem anderen Zweig, die Versprechen zurück, weitere.then()
auch wieder abgewiesen und nicht behandelt wurde.Möchten Sie vielleicht etwas tun, wie
Es klingt wie Sie haben einen Fehler in den catch-block. Wenn der Fehler geworfen wird, es gibt keine 2. catch-block den Fehler in der 1. catch-block.
Es zu beheben ...