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秒かかる別のローカルデータベースクエリがあります。これも非同期であるため、読み込みメッセージはこれらのクエリが完了するまで待機する必要があります。
また、これらの ajax クエリが 3 つまたは 4 つあり、すべてほとんど同じことを行っているため、現在どの ajax 成功コールバックにいるかによって、読み込みメッセージが変わります。
これが理にかなっていることを願っています。