gpt4 book ai didi

javascript - 具有嵌套 ajax 调用的 jQuery 延迟对象

转载 作者:行者123 更新时间:2023-12-03 21:51:43 25 4
gpt4 key购买 nike

我遇到一种情况,我的 ajax 调用必须按特定顺序执行。我在其他情况下使用了 jQuery Deferred 对象,但似乎找不到一种方法来使其表现得适当。

我有一个函数,它在其生命周期内执行许多 ajax 请求。部分请求会在其他请求成功回调期间执行。

我的问题:有没有办法将所有嵌套的延迟对象返回到原始 $.when 调用?

一个简化的例子是:

function nestedAjax() {
$.get("/", function(){
console.log("First ajax done.");
$.get("/", function(){
console.log("Second ajax done.");
});
});
};

我试图让 nestedAjax 函数使用 $.when()$.done() ,如下所示:

$.when(nestedAjax()).done(function(){
console.log("Complete");
});​

控制台输出读数:

> First ajax done.
> Second ajax done.
> Complete.

我可以返回第一个 get 来实现此目的:

> First ajax done.
> Complete.
> Second ajax done.

但显然这不是我所需要的。任何帮助将不胜感激。

最佳答案

其实很简单。尽管所有 AJAX 调用都是 Deferred 对象,但我仍然对方法本身使用一个对象。

function nestedAjax() {
var dfd = $.Deferred();
$.get("/echo/json/", function(){
console.log("First ajax done.");
$.get("/echo/json/", function(){
console.log("Second ajax done.");
dfd.resolve();
});
});

return dfd.promise();
};

关于javascript - 具有嵌套 ajax 调用的 jQuery 延迟对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12273437/

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