如何解决jQuery:所有嵌套的ajax调用也都完成后,调用then函数
我正在尝试借助function和when编写一些嵌套的ajax调用。但是目前,我的then函数无法正常工作。我想在完成所有Ajax调用(包括嵌套调用)时调用then函数。我想在以下时间调用功能
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",data: {"resId":resId},url: DesedentURL+"?limit=10&offset="+offset,beforeSend: function (xhr) {
xhr.setRequestHeader('Authorization',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),please contact administrator in case the problem persists.");
return null;
}.bind(this)
});
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。