1
我知道有幾種方法可以在ajax調用完成之前執行代碼,並且我知道使用when() - method是推薦的做法 this。 (http://api.jquery.com/jQuery.when/)
我有一個函數loadFilter()
它返回一個延遲的對象是這樣的:
function loadFilter() {
...code...
return $.ajax({
type: 'POST',
url: loadFile,
data: {object: obj},
dataType: 'html'
}).done(function(data) {
$(targetDiv).html(data);
initDrag();
$("body").removeClass("wait");
})
.fail(function(ts) {
alert(ts.responseText);
});
}
而且從getpage()
不同的值調用loadFilter()
功能進行二次另一個函數調用:
function getpage() {
...code...
loadFilter(subcatId, "getnavigationpages", paginationDiv, doSearch);
loadFilter(subcatId, "getproducts", targetDiv, doSearch);
//When ajax-calls are done in function loadFilter.
$.when(loadFilter()).done(function(rsdata1) {
...code to execute when both loadFilter-functions above
});
}
我怎麼知道什麼時候執行$ .when()?我想執行代碼時都loadFilters()
被稱爲,但我認爲!? $ .when()可以在第一次loadFilter()被調用時執行 或者第二次?
謝謝你的快速和良好的答案。現在我真的瞭解如何使用then()以及:-)當我能夠(還剩8分鐘)時,我會接受這個答案 – bestprogrammerintheworld
@TJCrowder:也許你的意思是「總是」而不是「然後」。 「總是」是無論延期狀態如何都會被觸發的「事件」。 'then'用於鏈接延遲,它有3個參數:'doneCallbacks,failCallbacks,progressCallbacks'。 – LeGEC
@LeGEC:謝謝!固定。 –