Javascript等待嵌套循环完成



这是我的问题:我有用于数据处理的嵌套循环(这是我所拥有的的简化版本

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

最新更新