这是我的问题:我有用于数据处理的嵌套循环(这是我所拥有的的简化版本
const dataTreatment = (formData) => {
for (let i = 0; i < formData.agencies.length; i++) {
for(const type in formData.formTypes) {
switch(type) {
case 'address':
formData[type].forEach(async (item) => {
await axios.post('', {});
}
break;
case 'schedules':
formData[type].forEach(async (item) => {
await axios.post('', {});
}
break;
}
}
}
}
在另一个文件中,我提前执行这个函数,并希望它等待循环完成,但它执行以下函数。
const submit = async () => {
await dataTreatment();
await doSomethingAfter();
}
我的问题是它没有等待并执行";doSomethingAfter;紧接着。我想我遗漏了一些关于循环和异步函数的东西。。。
谢谢
为了使await
调用工作,您的函数需要声明为async
。
const dataTreatment = async (formData) => { // note the async word
for (let i = 0; i < formData.agencies.length; i++) {
for(const type in formData.formTypes) {
switch(type) {
case 'address':
formData[type].forEach(async (item) => {
await axios.post('', {});
}
break;
case 'schedules':
formData[type].forEach(async (item) => {
await axios.post('', {});
}
break;
}
}
}
}
const submit = async () => {
await dataTreatment();
await doSomethingAfter();
}
doSomethingAfter
函数也是如此,需要声明为async
。