我需要做一些异步ajax调用,并且在每一个调用完成后,我将数字推送到一个数组,当所有ajax调用完成后,我用这个数组调用我的回调函数。但无法弄清楚该怎么做..
所以我尝试在我的代码中实现延迟方法,如here
所示这样结束:
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处理程序。
我在这里想念什么?