如何在$ .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次相同的方式重复调用它是非常多余的。

09-25 19:12