1. 程式人生 > >如何判斷多個Jquery.ajax全部請求完畢?

如何判斷多個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

.when(.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(); }) // …