Javascript Jquery deferred-done不等待解析()
我需要做一些异步ajax调用,在每次调用结束时,我将一个数字推送到一个数组中,当所有ajax调用完成后,我用这个数组调用回调函数。但我不知道怎么做 因此,我尝试在代码中实现延迟方法,如图所示 结果是这样的:Javascript Jquery deferred-done不等待解析(),javascript,jquery,ajax,asynchronous,jquery-deferred,Javascript,Jquery,Ajax,Asynchronous,Jquery Deferred,我需要做一些异步ajax调用,在每次调用结束时,我将一个数字推送到一个数组中,当所有ajax调用完成后,我用这个数组调用回调函数。但我不知道怎么做 因此,我尝试在代码中实现延迟方法,如图所示 结果是这样的: function uploader(uploads, cb) { var def = []; var reslist = []; $.each(uploads,function(key,value){ if(!value.sync){ def.push
function uploader(uploads, cb) {
var def = [];
var reslist = [];
$.each(uploads,function(key,value){
if(!value.sync){
def.push(_upload(value));
}
});
function _upload(upload){
var dfd = $.Deferred();
getAntrag(upload.timestamp, function(json) {
$.ajax({
url: 'http://api.***.com/',
type: "POST",
data: {
customer: json
},
async: false,
success: function(msg) {
try {
var res = JSON.parse(msg);
} catch (err) {
dfd.reject();
}
if (res.mldgcode === '0000') {
reslist.push(res.data.ident);
dfd.resolve();
} else {
dfd.reject();
}
}
});
});
return dfd.promise();
}
$.when.apply($,def).done(function(){
console.log('all done');
cb(reslist);
});
$.when.apply($,def).fail(function(args){
console.log('failargs',args);
cb(args);
});
}
因此,现在在我的dfd.resolve之前调用done处理程序
我在这里错过了什么?试试$.whendef.doneh你怎么知道何时执行dfd.resolve,你在那里放了日志了吗?为什么要使用async:false???@Bergi是的,我认为async:false不重要,但我在没有它的情况下测试了它-没有变化,这真的很奇怪,看起来它应该可以工作。您能否在调用$之前记录def的值。何时?