Jou*_*man 4 javascript ajax jquery asynchronous
我有一个javascript函数进入循环并为每个循环发出异步ajax调用.我需要知道所有ajax调用何时返回并被处理,因为我想在那时更新UI.
循环如下:
function sync_SyncLocalStorageToServer() {
if (helper_IsAppOnline()) {
$.log('sync_SyncLocalStorageToServer detects app is ONLINE');
// Post each cached entry to the server - this is the main sync function
for (var i = 0, len = localStorage.length; i < len; i++) {
var lskey = localStorage.key(i);
if (lskey.substr(0, 8) === 'response') {
$.log('Sync found response with key=' + lskey);
var postdata = localStorage.getItem(lskey); // Get the form data
$.log('Calling server with ls response:' + postdata);
var localkey = lskey;
$.ajax({
type: "POST",
dataType: 'json',
url: "/Profile/PostForm",
data: { jsonpost: postdata },
success: function (data) {
if (data.rc == "success") {
localStorage.removeItem(data.localStorageKey); // Remove the relevant localStorage entry
$.log('ServerSuccess:' + data.message + ',removed localStorageKey=' + data.localStorageKey);
} else {
$.log('ServerUnhappy:' + data.message + ',did not remove localStorageKey=' + data.localStorageKey);
}
}
, error: function (data) {
$.log('ERR:' + data);
}
});
}
}
}
else {
$.log('sync_SyncLocalStorageToServer detects app is OFFLINE');
}
}
Run Code Online (Sandbox Code Playgroud)
当最后一次异步ajax调用最终从服务器返回时,我最简单的方法是调用我的UI刷新函数?
谢谢.
计算执行AJAX请求的次数,然后计算您看到已完成回调的调用次数.一旦回调完成计数等于你发出ajax调用的次数,你知道你已经完成了.
var total = arr.length;
var count = 0;
for(var i = 0; i < arr.length; i++){
$.ajax({
// other options
complete: function(){
count++;
if(count == total){
// all finished!
}
}
});
}
Run Code Online (Sandbox Code Playgroud)
请注意,我使用'完整'回调,而不是'成功',因为如果其中一个请求失败''成功'将不会被调用,但'完成'将会被调用.此外,我首先在'total'中声明预期金额,而不是在此示例中计算.这样就可以避免在发布所有挂起的ajax请求之前完成所有挂起的ajax请求的可能性(尽管技术上可行),因此具有匹配的计数.
| 归档时间: |
|
| 查看次数: |
4266 次 |
| 最近记录: |