【发布时间】:2017-11-24 11:59:43
【问题描述】:
我知道这个问题很常见。我正在使用 es6 承诺,并且我有多个层次。
在运行时,当我没有得到承诺时,我的控制台中有Uncaught (in promise)。但事实是我确实在我的代码中发现了它。
快速简化示例:
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
我知道我什么都不做,但是嗯。我也可以在我的 API 层做历史推送,但这不是它的责任。
如何避免控制台中的错误?有办法吗?我什至在考虑就这样离开它。
【问题讨论】:
-
是错误还是警告?
-
它显示为错误,但它是一个警告,因为它不会破坏任何东西。我讨厌控制台中的警告/错误不是来自我。这是不合理的,因为这不是坏习惯恕我直言
-
也许是您自己的代码? errorUtils.dispatchErrorWithTimeout(errorLogin); log.log(err);
-
不,事实是,这是一个“未处理的拒绝”,如果我在我的 loginContainer 中捕获被拒绝的承诺,我没有错误消息。这是一个来自 es6-promises 的 console.error。
-
你的捕获中没有抛出错误?这是什么错误?
标签: javascript reactjs promise