如何在$ .when中使用动态延迟的?有一个函数ajaxFunction
返回延迟的诺言。
function ajaxFunction(image){
var dfd = $.Deferred();
//Ajax of image
return dfd.promise();
}
根据动态条件调用此ajaxFunction
var defs = {};
var someQuerySelector = document.querySelectorAll('image');
for (var i = 0; i < someQuerySelector.length; i++) {
defs[d + 'i'] = ajaxFunction(someQuerySelector[i]);
}
现在,我想在
$.when()
中使用它们,以及如何像defs
这样在内部使用$.when(defs['d1'],defs['d2'])
动态键。如何在其中使用动态变量。方法或帮助的任何更改将不胜感激。 最佳答案
如果将defs
更改为数组,则可以将其apply()
更改为$.when
,如下所示:
var defs = [];
var someQuerySelector = document.querySelectorAll('image');
for (var i = 0; i < someQuerySelector.length; i++){
defs.push(ajaxFunction(someQuerySelector[i]));
}
$.when.apply(this, defs).done(function() {
// all complete, do something...
});
或纯粹在jQuery中:
var defs = $('image').map(function() {
return ajaxFunction(this);
});
$.when.apply(this, defs).done(function() {
// all complete, do something...
});
以上假设您将
image
更改为有效的选择器,并且为ajaxFunction()
提供了一些参数,否则以N次相同的方式重复调用它是非常多余的。