如果事先不知道变量的名称和数量,如何将变量列表动态注入(inject)函数。特别是:
我正在尝试替换这个“硬编码”版本:
$.when(img1Loaded,img2Loaded,img3Loaded).done(function () { ... 等
像这样:
$.when(MyDynamicList).done(function () { ... 等
在更广泛的上下文中,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”函数来使用 promises 处理数组:
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”解析时完成。
您可以在此处阅读有关 promise 的更多信息: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise
希望对你有帮助
关于javascript - 将变量列表动态包含到 Jquery 函数中作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51895463/