2016-06-15 52 views
1

如何在$ .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'])。如何使用動態變量。方法或幫助的任何改變將不勝感激。

回答

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次是相當多餘的。

+0

是的我正在使用圖像作爲參數。更新的問題 –

+0

我更新了我的答案 –

+0

$ .when.apply(null,defs)這對我有用:)感謝您的幫助 –