gpt4 book ai didi

jquery - 从同一函数返回两个 ajax 调用 - $(when) 这是执行的吗?

转载 作者:行者123 更新时间:2023-12-01 08:01:40 24 4
gpt4 key购买 nike

我知道在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com