在 $.when 中使用动态变量

Using dynamic variables in $.when

如何在$.when中使用动态deferred?获得了一个 ajaxFunction 函数 returns 延迟承诺。

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 次是非常多余的.