gpt4 book ai didi

Javascript - 异步等待不适用于条件

转载 作者:行者123 更新时间:2023-11-30 14:50:21 24 4
gpt4 key购买 nike

我已经研究了好几个小时了,但我对 async/await 的工作原理还是越来越困惑。现在我有这段代码:

    created: function () {

Event.$on('open-stage', (stage) => {

this.$validator.validateAll().then(() => {

const validateFields = async () => {
const uniqueEmail = await this.checkIfUniqueEmail();
if(uniqueEmail) {
console.log('uniqueEmail is true'); // <-- this is what I need to achieve
Event.$emit('change-stage', this.wizardStage.successor);
}
};

validateFields();
}).catch(() => {
toastr.warning('Error');
Event.$emit('change-stage-denied');
return true;
});
});
},

methods: {
checkIfUniqueEmail() {
if (!this.player.email || !this.player.email.length) {
return true;
}

this.$http.post('playerExists', {
email: this.player.email
}).then(response => {
if (response.data.exists) {
toastr.error(Good');
Event.$emit('change-stage-denied');
return false;
}
return true;
}).catch(error => {
toastr.warning('Fail');
Event.$emit('change-stage-denied');
return false;
});
},
}

我的目标很简单 - 如果方法 checkIfUniqueEmail() 返回 true 我想查看 console.log 并将发出 change-state。问题是常量 uniqueEmail 始终未定义。只有在函数 checkIfUniqueEmail() 的响应为真后,我如何才能做到这一点?我需要改变什么?我正在使用 vue.js 2.1.10。

最佳答案

你需要让你的方法返回 promise

checkIfUniqueEmail() {
if (!this.player.email || !this.player.email.length) {
return true;
}

return this.$http.post('playerExists', {
email: this.player.email
}).then(response => {
if (response.data.exists) {
toastr.error('Good');
Event.$emit('change-stage-denied');
return false;
}
return true;
}).catch(error => {
toastr.warning('Fail');
Event.$emit('change-stage-denied');
return false;
});
}

关于Javascript - 异步等待不适用于条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48228519/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com