如何在$ .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'])
动态密钥。如何使用动态变量。任何方法或帮助的变化都将受到高度赞赏。
答案 0 :(得分:2)
如果您将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次非常多余。< / p>