提问人:Praveen Shakkarval 提问时间:10/1/2020 最后编辑:James ZPraveen Shakkarval 更新时间:10/1/2020 访问量:55
Jquery:当所有嵌套的 ajax 调用也都完成时调用函数
Jquery: Call then function when all nested ajax calls are also complete
问:
我正在尝试在函数和时间的帮助下编写一些嵌套的ajax调用。但目前,我的 then 函数未按预期工作。我想在所有 Ajax 调用(包括嵌套调用)完成后调用函数。我想在以下情况下调用函数
this.getDescendants(resourceId[1],resourceData.limit+resourceData.offset);
对于所有主要的 Ajax 调用也已完成。目前,在嵌套的 ajax 调用完成之前完成。
getUserInfo: function(){
$.ajax({
type: "GET",
contentType: "application/json",
url: UserURL,
context: this,
beforeSend: function (xhr) {
$('#fade-wrapper').fadeIn();
xhr.setRequestHeader('Authorization', "Basic "+this._basicCred);
},
success: function(resourceData) {
if(resourceData.resources != undefined && resourceData.resources.length > 0){
var deferreds = [];
for (var i=0; i < resourceData.resources.length; ++i){
var deferred = this.getDescendants(resourceData.resources[i],0);
deferreds.push(deferred);
}
$.when.apply($, deferreds).then(function() {
var currentContext = this[0];
console.log(currentContext);
console.log("Then called.");
});
} else {
alert("No visible resource has been found.");
}
}.bind(this),
error: function(xhr, status, err) {
console.error( status, err.toString());
$('#fade-wrapper').fadeOut();
alert("Error has occurred, please contact administrator in case the problem persists.");
return null;
}.bind(this)
});
},
getDescendants: function(resId,offset){
return $.ajax({
type: "GET",
contentType: "application/json",
data: {"resId":resId},
url: DesedentURL+"?limit=10&offset="+offset,
context: this,
beforeSend: function (xhr) {
xhr.setRequestHeader('Authorization', "Basic "+this._basicCred);
},
success: function(resourceData, textStatus, xhr) {
if(this._resResults == undefined){
this._resResults = [];
}
this._resResults.push(resourceData);
console.log("resourceData");
console.log(resourceData);
if(resourceData.totalResults > (resourceData.limit+resourceData.offset) ){
var resourceId = resourceData.links[0].href.match("resources/(.*)/descendants");
console.log(resourceId);
this.getDescendants(resourceId[1],resourceData.limit+resourceData.offset);
}
}.bind(this),
error: function(xhr, status, err) {
console.error( status, err.toString());
$('#fade-wrapper').fadeOut();
alert("Error has occurred, please contact administrator in case the problem persists.");
return null;
}.bind(this)
});
}
答: 暂无答案
评论