我正在学习如何使用Async / Await,据我所知,它应该等到Await完成执行后再继续执行代码。
但是,我的代码在等待后完全停止执行,这是我的方法(我正在使用Vue):
async register () {
await this.form.validateFields((err, values) => {
if (err) {
return
}
alert('this gets executed if err is empty')
})
alert('this never gets get executed, why?')
}
validateFields()是Vue的Ant Design版本的函数,并验证我的表单输入。关于here的更多信息,也许它可以帮助告知您任何人。
那么我到底在做什么错了?
答案 0 :(得分:2)
存在异步等待以简化使用Promise的语法。如果您不使用诺言,那么异步/等待不会给您带来任何好处。
看来validateFields使用的是回调而不是promise,因此您需要围绕它创建自己的promise。例如:
async register () {
try {
const values = await new Promise((resolve, reject) => {
this.form.validateFields((err, values) => {
if (err) {
reject (err);
} else {
resolve(values);
}
})
})
console.log('got values', values);
} catch (error) {
console.log('caught an error', error);
}
}