为了保证异步操作按顺序执行,并且等到每个异步操作完成后再进入下一个迭代,你应该使用 for...of
循环代替 forEach
。for...of
可以与 await
一起工作,确保每个异步操作完成后才进行下一个。
for...of
替代forEach
: 使用for...of
循环代替forEach
,这样每次迭代时,代码会等待异步操作完成后才进行下一次迭代。await
与异步请求: 在异步请求中,使用await
等待请求结果,确保request.post
完成后再继续执行后续操作。- 顺序执行: 在两个循环中,异步操作会按顺序执行,并确保每个请求都在前一个请求完成后执行。
- 使用
for...of
循环:for...of
可以在每次迭代时等待await
完成,所以在getAllSysData
完成之前,代码不会继续执行下一次迭代。 async
函数包装: 将你的代码放入async
函数中,这样你就可以使用await
等待每个异步操作的完成。await
与for...of
配合:await
会暂停for...of
循环的执行,直到当前的异步操作(即getAllSysData
)完成,确保每个操作按顺序执行。
await store.state.systemIdlist.forEach(async (item) => {
await store.state.deviceDeal.getAllSysData(item, store, 1)
console.log("试试1", item)
})
store.state.isgonedwgdevice = true
如何执行完foreach循环,再执行下面,同步执行
修改后的代码:
// 使用 for...of 循环来确保每次异步操作完成后再继续执行
async function execute() {
for (let item of store.state.systemIdlist) {
await store.state.deviceDeal.getAllSysData(item, store, 1);
console.log("试试1", item);
}
// 确保上述循环执行完毕后再执行这行代码
store.state.isgonedwgdevice = true;
}
// 调用该函数
execute();