0

我希望在从 sqLite 的数据库中查询信息时显示加载消息。这是我到目前为止所拥有的:

    $.mobile.showPageLoadingMsg("a", "Updating Distributor List...", true);
    $.ajax({ 
        type: "POST",
        cache: false,
        url: "https:xxxx.php",
        data: { lastUpdated: lastUpdated, section: 'distributors'},
        dataType: "json",
        success: function(result){
                $.each(result.response, function(i, val) {
                    db.transaction(function(ctx) {
                        ctx.executeSql("SELECT ID FROM distributors WHERE token = '"+val.ID+"' ", [], function(tx,checkres) { //select all from phoneDB 
                            if(checkres.rows.length) {
                                    tx.executeSql("update distributors set distributorName='"+val.distributorName+"',address='"+val.address+"',postcode='"+val.postcode+"',phone='"+val.phone+"',email='"+val.email+"',lastUpdated='"+val.lastUpdated+"' WHERE token='"+val.ID+"'", []);
                            } else {
                                if(val.deleted != "1") {
                                    tx.executeSql("INSERT INTO distributors(distributorName,address,postcode,phone,email,lastUpdated,token) VALUES('"+val.distributorName+"','"+val.address+"','"+val.postcode+"','"+val.phone+"','"+val.email+"','"+val.lastUpdated+"','"+val.ID+"')", []);
                                }
                            }
                        });
                    });
                });     
            $.mobile.hidePageLoadingMsg();                      
        }
    })

所以这会触发一个 AJAX 查询,我最初的想法是在成功完成后显示加载消息并隐藏它。但是......在成功回调中是另一个本地数据库查询,最多需要 15 秒才能完成。这也是异步的,因此加载消息取决于等待这些查询完成。

此外,我有大约 3 或 4 个这些 ajax 查询都在做几乎相同的事情,所以加载消息会根据我们当前所在的 ajax 成功回调而改变。

希望这是有道理的。

4

1 回答 1

0

这是一个快速的想法。设置 4 个全局变量。将它们的值设置为 false。

一旦第一个外部查询完成,将第一个全局变量的值设置为 true 并调用将停止进度指示器的函数。

仅当所有全局变量都设置为 true 时,此函数才会停止进度指示器。

因此,当所有 4 个内部 ajax 调用完成时,此函数将停止您的进度指示器。

我希望你知道如何在 javascript 中设置全局变量

function someFunction(){
    this.firstIndicator=false;
    this.secondIndicator=false;
}

然后你可以调用函数 someFunction.firstIndicator

于 2013-03-07T04:47:40.800 回答