我是 jquery 的新手,最近对这些回调的强大功能感到惊讶。但是在这里我有一些逻辑,我不确定最好的方法是什么。基本上,我在 chrome 中的 web sql 数据库中有一堆表。我需要遍历表 A、表 B 和表 C。我需要将表的每一行提交给服务器。每行代表一堆复杂的逻辑和数据url,它们必须按照A -> B -> C的顺序提交。
常规的 Java 方式是:
TableA.SubmitToServer()
{
query table A;
foreach(row in tableA.rows)
{
int nRetID = submitToServer(row);
//do other updates....
}
}
表 B 和表 C 类似。
然后只需调用:
TableA.SubmitToServer();
TableB.SubmitToServer();
TableC.SubmitToServer();
//that is very clear and easy.
但在 JQuery 中,它可能是:
db.Transaction(function (tx){
var strQuery = "select * from TableA";
tx.executeSql(strQuery, [], function (tx, result) {
for(i = 0 ; i < result.rows.length; i++) {
submitTableARowToServer(tx, result.rows.getItem(i), function (tx, result) {
//do some other related updates based on this row from tableA
//also need to upload some related files to server...
});
}
},
function errorcallback() ...
});
如您所见,已经有足够多的嵌套回调。现在,我应该将 TableB 和 tableC 的流程放在哪里?它们都需要具有相似的逻辑,并且只能在 TableA 完成所有操作后才能调用它们。那么,在 JQuery 中执行此操作的最佳方法是什么?
谢谢