[英]Dynamic include of a list of variables into a Jquery function as parameters
如果事先不知道變量的名稱和數量,如何將變量列表動態注入到函數中。 特別是:
我正在嘗試替換這個“硬編碼”版本:
$.when(img1Loaded,img2Loaded,img3Loaded).done(function () { ... etc
像這樣:
$.when(MyDynamicList).done(function () { ... etc
在更廣泛的上下文中,var MyDynamicList 可以用腳本填充,它保存來自宣布每個圖像加載完成的函數的響應。 也就是說,我需要引用許多這樣聲明的變量,如下所示:
var img1Loaded = $.Deferred();
然后在 'img.onload' 函數中引用為: img1Loaded.resolve();
我讓這一切都適用於單個圖像,但不適用於 2 個或更多...
類推:
var it=['#d1,#d2'];
$(it[0]).on( "click", function() {
alert(this.id);
});
換句話說,如何為我的案例創建等效的“它”。 這是完全錯誤的: var MyDynamicList= img1Loaded,.... imgNLoaded;
我在這上面畫了一個空白...
也許您可以創建自己的“when”函數,使用 Promise 處理數組:
function myWhen(dynamicList) {
const promises = dynamicList.map(item => new Promise( function(resolve,reject) {
$.when(item).done(data => resolve(data));
} ) );
return Promise.all(promises);
}
const MyDynamicList = [$.ajax( "foo" ) , $.ajax( "bar.aspx" ) ...];
myWhen(MyDynamicList).then( items => {
//do stuff
} ).catch(err => {
//handle error
})
myWhen 將在 dynamicList 中的所有“thenables”解決時完成。
您可以在此處閱讀有關承諾的更多信息: https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise
希望這可以幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.