У меня есть следующий код jQuery:
myFunc: function(cmd, obj){
var idToExtMap = this. map;
var requireRes = this.reqInst;
var deferreds = [];
var ret = true;
$.each(idToExtMap[cmd], function(key, ext){
if(ext.$classIns && ext.$classIns.prepare) {
var returnedValue = ext.$classIns.prepare(obj);
deferreds.push(returnedValue);
$.when(returnedValue).done(function(satisfied){
if(ret!==false){
ret = satisfied;
}
});
} else {
requireRes(ext).done(function(){
var cls = $.toFunction(ext.$jscls);
if(cls) {
ext.$classIns = new cls();
if(ext.$classIns.prepare){
var returnedValue = ext.$classIns.prepare(obj);
deferreds.push(returnedValue);
$.when(returnedValue).done(function(satisfied){
if(ret!==false){
ret = satisfied;
}
});
}
}
});
}
});
$.when.apply(null, deferreds).done(function(){
return ret;
});
}
Проблема, с которой я сталкиваюсь, заключается в том, что $.when.apply выполняется до того, как все отложенные запросы будут помещены в массив отложенных. Как я могу убедиться, что $.when.apply выполняется только после того, как все deferreds будут помещены в массив deferreds?