Javascript 异步/等待未按预期运行
我正在学习如何使用Async/Await,据我所知,应该等到Await执行完毕后再继续编写代码 但是,我的代码在等待后完全停止执行,这是我的方法(我使用的是Vue): validateFields()是Vue版本Ant Design的一个函数,用于验证我的表单输入。更多关于它的信息,也许它将有助于通知你们中的任何人Javascript 异步/等待未按预期运行,javascript,vue.js,Javascript,Vue.js,我正在学习如何使用Async/Await,据我所知,应该等到Await执行完毕后再继续编写代码 但是,我的代码在等待后完全停止执行,这是我的方法(我使用的是Vue): validateFields()是Vue版本Ant Design的一个函数,用于验证我的表单输入。更多关于它的信息,也许它将有助于通知你们中的任何人 那么,我到底做错了什么呢?Async await的存在是为了简化使用承诺的语法。如果您没有使用承诺,那么async/await不会给您带来任何好处 validateFields似乎正
那么,我到底做错了什么呢?Async await的存在是为了简化使用承诺的语法。如果您没有使用承诺,那么async/await不会给您带来任何好处 validateFields似乎正在使用回调而不是承诺,因此您需要围绕它创建自己的承诺。例如:
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);
}
}
Async await的存在是为了简化使用承诺的语法。如果您没有使用承诺,那么async/await不会给您带来任何好处 validateFields似乎正在使用回调而不是承诺,因此您需要围绕它创建自己的承诺。例如:
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);
}
}
wait
主要作用于承诺。如果您调用的函数接受回调,它很可能不会返回承诺,因此wait
无效。您可以包装基于回调的函数以返回承诺。它返回一个对象,那么我该如何解决这个问题呢?wait
主要用于承诺。如果您调用的函数接受回调,它很可能不会返回承诺,因此wait
无效。您可以包装基于回调的函数以返回承诺。它返回一个对象,那么我该如何解决这个问题呢?