function confirmPassword() {
let password = document.getElementById("password").value
let email = document.getElementById("email").value
Service.confirmPassword(email, password).then(response => {
res = response.data
setTwoFactorStep(1)
}).catch(err => {
alert(err.data.message)
})
alert(res)
}
请求完成后,response.data
未定义,而我可以检查我的浏览器它是否成功,并且正文存在。如果我在 response.data
内提醒 .then
,我会收到 Object object
OBS:之前声明了 var res
,方法 Service.confirmPassword
是 axios.post。
答案 0 :(得分:1)
您发布的代码不是同步的 警报将在您的 http 请求有机会解决之前触发,这可能是您获得未定义的原因。如果您想对响应正文执行任何操作,您可能应该在“then”回调中执行此操作。
function confirmPassword() {
let password = document.getElementById("password").value
let email = document.getElementById("email").value
// 1.your service call through axios gets triggered
Service.confirmPassword(email, password).then(response => {
// 3.this gets execute after the alert below once the http request has been resolved
res = response.data
setTwoFactorStep(1);
// invoke your handler here...
}).catch(err => {
alert(err.data.message)
})
alert(res) // 2.this gets executed next
}
如果你想以同步方式写这个,考虑使用 async/await
async function confirmPassword() {
let password = document.getElementById("password").value
let email = document.getElementById("email").value
const response = await Service.confirmPassword(email, password).catch(err => alert(err.data.message));
res = response.data;
setTwoFactorStep(1);
alert(res)