javascript - 如何处理 catch 中的错误 - vue.js
问题描述
我想知道如何处理承诺中的错误。我有带有电子邮件和个人代码输入的注册表单。当有人不填写输入时,就会出现错误。但是当我的基地中存在电子邮件或个人代码时,我想将他重定向到登录页面 - 因为他的帐户存在。还有一个问题。如果我的基地中有一封电子邮件,他会被重定向到登录(没关系),但是当他写错电子邮件但个人代码很好时,我的控制台出现错误。这是一个代码:
Promise.all(auxData).then(() => {
this.profileCheck()
.then(() => {
// some code
})
.catch(e => {
if ( e.email.custEmailExists == "This email existe." ) {
co.postLogin(loginData).then(data => {
this.$router.push({ name: "login" });
});
} else if (
e.person_code.custPersonCodeExists == "this personal code
existe") {
this.$router.push({ name: "login" });
}
});
});
因此,在第二种情况下(这是电子邮件错误且存在个人代码的情况),我的错误是:“未捕获(承诺中)TypeError:无法读取未定义的属性'custEmailExists'”。这个错误从我的 api 中自动显示。第一个条件被删除,因为电子邮件是新的,所以它必须关注第二个条件。但事实并非如此。
解决方案
JavaScript 尝试检查 的值e.email.custEmailExist
,但 e.email 是undefined
。利用:
if (e.email && e.email.custEmailExists == "This email existe.")
或者:
if ((e.email || {}).custEmailExists == "This email existe.")
第二个有点hacky。
推荐阅读
- .net - VS 2019 没有为新项目构建解决方案
- angularjs - 数据未填充到视图中
- ocaml - 如何将 JavaScript 值转换为 reasonml 中的变体?
- api - 有没有办法在 NewRelic 监控 Microsoft Teams 数据?
- python - 模拟不覆盖 Python 中函数的返回
- janusgraph - 如何使用 graph.openManagement().updateIndex()?
- mongodb - 无法在 `mongod` shell 中创建与 MongoDB 服务器的连接
- docker - Jenkins 管道 docker.push() 给出错误“docker tag”需要 2 个参数
- ios - 离子白屏仅适用于 ios 版本
- html - 如何让背景形状定位在页面下方的部分中?- CSS