原因:由于setTimeout是异步的,for循环是同步的,所以你的循环会立即继续到下一个迭代,而不会等待setTimeout完成。这意味着所有setTimeout调用几乎会同时开始等待2秒,而不是一个接一个地等待,因此程序出错。
解决方法:
// 创建一个返回Promise的延迟函数
function delay(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
// 使用async标记函数,以便使用await
async function processListInfo(EleList, list) {
for (var index = 0; index < EleList.length; index++) {
// ... 省略之前的代码 ...
// 等待2秒
await delay(2000);
}
}
// 调用异步函数
processListInfo(EleList, list).then(() => {
// 所有操作完成后执行的代码
console.log('所有xxx信息已处理完毕');
}).catch(error => {
// 处理任何可能发生的错误
console.error('处理xxx信息时出错:', error);
});