我的场景是这样的,我上传显示了多个表格在页面上,然后我点击全部上传,就会从第一个表格开始,一条条的上传数据,当第一个表格上传完成全部数据后,也就是表格中有一个字段都变成了3代表都上传成功了,然后再去上传第二个表格,以此类推。最终上传完成全部的表格。
这种情况如何处理呢,我是直接用的循环来上传多个表格,但是并不行。他会出现第一个表格还没有上传成功的时候直接就循环到了最后一个了。我是希望页面是第一个循环成功后跳到第二个上继续上传。
就像这样,我想等第一个表格全部成了对钩上传成功后在切换到第二个表格内上传。有什么办法解决在循环中符合条件了才下一轮循环吗,或者有什么方法可以处理这种情况
深奥一点就用Generator 。附带递归。模拟 async/await...
你可以使用 async/await 和 Promise 来解决这个问题。
首先,将你的上传函数包装成一个返回 Promise 的函数,这样你就可以使用 await 语句等待上传完成。
然后,在你的循环中,使用 await 语句等待每次上传完成,并检查是否成功。如果上传成功,就可以继续循环到下一个表格。如果失败,你可以捕获错误并终止循环。
例如:
async function uploadTables(tables) {
for (const table of tables) {
try {
await uploadTable(table);
} catch (error) {
console.error(error);
break;
}
}
}
在这个例子中,如果某个表格上传失败,那么就会抛出错误,并终止循环。
需要注意的是,你需要在调用这个函数时使用 await,或者将其包装在另一个 async 函数中,才能使用 await 语句。
例如:
async function main() {
await uploadTables(tables);
console.log('所有表格上传完成!');
}
main();
你好,这种情况使用递归最合适不过了,满足条件了我再调用。但是要注意,递归要有终止条件哈