我知道在 ajax 调用完成之前有多种执行代码的方法,并且我知道使用 when() - 方法是推荐的执行方法 这。 (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() 时还是第二次调用时?
最佳答案
$.when
接受任意数量的 Promise,并在所有这些 Promise 都得到解决时得到解决。所以你的代码看起来像这样:
$.when(
loadFilter(subcatId, "getnavigationpages", paginationDiv, doSearch),
loadFilter(subcatId, "getproducts", targetDiv, doSearch)
).always(function() {
// Both have completed
});
我用过always
如上所述,无论解决方案的类型如何(已解决、失败等),都会触发该问题。或者您可以使用done
仅处理成功的解决方案,或 then
分别处理每种类型的分辨率。
关于jquery - 从同一函数返回两个 ajax 调用 - $(when) 这是执行的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19378310/