如何判斷多個Jquery.ajax全部請求完畢?
丟擲問題? 想在網頁資料載入完成之前顯示loading,待所有資料載入完成清除loading,一個頁面有多個ajax非同步請求,怎麼判斷全部請求都完成了?
方法一:新增一個計數,ajax請求完成後計數+1,並在每次請求完成後都判斷計數是否為所有ajax的數量,滿足就清除loading
(function () { var count = 0; var result = {};
$.get(‘http://data1_source’, function (data) { result.data1 = data; count++; handle(); }); $.get(‘http://data2_source’, function (data) { result.data2 = data; count++; handle(); }); $.get(‘http://data3_source’, function (data) { result.data3 = data; count++; handle(); });
function handle() { if (count === 3) { var html = fuck(result.data1, result.data2, result.data3); render(html); } } })();
方法二:一種是使用jquery自帶的when
.ajax(), $.ajax()).then(function(){ // 結束 })
方法三:設定全域性變數
var ajaxCount = 10 ; var ajaxFinished = function(){ if(ajaxCount > 0){// do nothing} else{ // 請求全部完成,做該做的事情 } }
$.ajax(xxx1).then(function(){ ajaxCount --; ajaxFinished(); }); $.ajax(xxx2).then(function(){ ajaxCount --; ajaxFinished(); }) // …