我有多个带有SQlite事务的AJAX调用来添加数据。由于某些原因,其中一个AJAX调用未执行但hideLoadingScreen()触发正常。
我正在使用此代码来计算回调:
showLoadingScreen();
var callbackCount = 0;
function ajaxCallback() {
++callbackCount;
if (callbackCount >= 3) {
hideLoadingScreen();
}
}
我使用SQlite交易的三个AJAX调用如下:
$.ajax({
url: url,
jsonp: "callback",
dataType: "jsonp",
success: function (data) {
db.transaction(function (tx) {
$.each(data.result, function (i, item) {
tx.executeSql('INSERT OR REPLACE INTO db_table (id, type, title) VALUES (?,?,?)', [item.ID, "update", item.post_title]);
});
ajaxCallback();
});
}
});
或者还有其他方法如何在succesfull之后计算回调 - db.transactions ????
答案 0 :(得分:0)
在ajaxCallback();
循环内移动$.each(...)
,因为在AJAX调用结束后success
回调执行一次
修改:在hideLoadingScreen();
之后,将计数器重置为零,如callbackCount = 0;
答案 1 :(得分:0)
应用程序必须先等待AJAX调用完成,然后才能开始事务并在cordova-sqlite-exe中添加数据元素
直到ajax调用完成为止,所有语句将在ajax调用完成后处于队列状态,然后只有所有语句开始逐个执行
如果要计算插入的行数,从成功退出 回调,请执行Select查询以返回表的长度。