2

我是 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 中执行此操作的最佳方法是什么?

谢谢

4

0 回答 0