gpt4 book ai didi

javascript - 执行ajax函数直到另一个ajax调用成功

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

我需要执行一个ajax函数,这里的细节是我想执行这个函数,直到另一个ajax函数返回成功。

这是我必须等待返回成功的函数(try..catch block )

Ajax函数1

$.ajax({
type : "GET",
url :url,
data : parameters,
success : function(msg) {
try {
var jsonObject = JSON.parse(msg);
console.debug(msg);
//SendToDMS(msg);
} catch (e) {
$("#SaveConfig").removeAttr("disabled");
toastr.error(msg + '.', "Message");
}
},
failure : function(msg) {
$("#SaveConfig").removeAttr("disabled");
toastr.error('Error: ' + msg + '.', "Message");
}
});

我想要这样的东西:

while ( Ajaxfunction1 != success ) { // while the previous ajax function not return success execute this another ajax function
$.ajax({
type : "GET",
url :url,
data : parameters,
success : function(msg) {
// something on success
},
failure : function(msg) {
// something when comes an error
}
});
}

我怎样才能做到这一点?感谢您的帮助

最佳答案

您可以使用从 $.ajax 返回的 Deferred 并检查它的 state()查看它是否已解决、拒绝或待处理,因此类似这样的递归函数应该可以满足您的要求。

var waitFor = $.ajax({
type : "GET",
url : url,
data : parameters
}).done(function(msg) {
try {
var jsonObject = JSON.parse(msg);
} catch (e) {
$("#SaveConfig").removeAttr("disabled");
toastr.error(msg + '.', "Message");
}
}).fail(function(msg) {
$("#SaveConfig").removeAttr("disabled");
toastr.error('Error: ' + msg + '.', "Message");
});

(function rec() {
$.ajax({
type : "GET",
url : url,
data : parameters
}).always(function() {

if (waitFor.state() != 'resolved') rec();

}).done(function(msg) {
// something on success
}).fail(function(msg) {
// something when comes an error
});
})();

关于javascript - 执行ajax函数直到另一个ajax调用成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25557157/

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