【发布时间】:2022-01-13 11:55:58
【问题描述】:
this.$auth.loginWith 返回一个 Promise,但我不确定是否应该将它包装在 try/catch 中,或者只是在 Promise 上使用 catch。
哪种方法是正确的?
尝试/捕捉:
async login() {
try {
const response = await this.$auth.loginWith('laravelSanctum', {
data: {
email: 'xxx',
password: 'xxx',
},
});
this.$auth.setUser(response.data.data);
} catch (e) {
}
},
赶上:
async login() {
const response = await this.$auth.loginWith('laravelSanctum', {
data: {
email: 'xxx',
password: 'xxx',
},
}).catch(function(e) {
});
this.$auth.setUser(response.data.data);
},
【问题讨论】:
-
到目前为止,您为自己找到答案做了什么? -> How much research effort is expected of Stack Overflow users?
-
它们做了两件不同的事情。他们不必这样做,但按照您编写它们的方式,第一段代码将不会在失败时调用
this.$auth.setUser();。第二段代码会将undefined分配给response(因为.catch()不返回任何内容),并且this.$auth.setUser(response.data.data);将 被调用。然后失败,因为response是undefined,因此response.data会抛出错误。 -
不要这样做。忽略错误不是一个好习惯,如果你真的有理由至少添加评论为什么要这样做。
标签: javascript nuxt.js nuxt-auth