Javascript 将变量列表作为参数动态包含到Jquery函数中
如果事先不知道变量的名称和数量,如何将变量列表动态注入函数中。特别是: 我正在尝试替换此“硬编码”版本:Javascript 将变量列表作为参数动态包含到Jquery函数中,javascript,jquery,jquery-deferred,Javascript,Jquery,Jquery Deferred,如果事先不知道变量的名称和数量,如何将变量列表动态注入函数中。特别是: 我正在尝试替换此“硬编码”版本: $.when(img1加载、img2加载、img3加载)。完成(函数(){…etc 比如说: $.when(MyDynamicList).done(函数(){…etc 在更广泛的上下文中,可以使用脚本填充var MyDynamicList,它保存来自宣布每个映像加载完成的函数的响应。也就是说,我需要引用一些声明如下的变量: var img1load=$.Deferred(); 然后在“img
$.when(img1加载、img2加载、img3加载)。完成(函数(){…etc
比如说:
$.when(MyDynamicList).done(函数(){…etc
在更广泛的上下文中,可以使用脚本填充var MyDynamicList,它保存来自宣布每个映像加载完成的函数的响应。也就是说,我需要引用一些声明如下的变量:
var img1load=$.Deferred();
然后在“img.onload”函数中引用为:img1Loaded.resolve();
我有它所有的工作为一个单一的图像,但不是为2或更多
以此类推:
var it=['#d1,#d2'];
$(it[0]).on( "click", function() {
alert(this.id);
});
换句话说,如何为我的案例创建“it”的等价物。这是完全错误的:var MyDynamicList=img1Loaded,.imgNLoaded;
我对此完全是空白…也许您可以创建自己的“when”函数,使用承诺来处理数组:
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”解析后完成
您可以在此处阅读有关承诺的更多信息:
希望这有助于检查答案的最新版本,我意识到我犯了一个小小的错误。你建议的方法如预期的那样有效,谢谢Martin!如果没有其他建议,我将重新定义我的方法,并接受你的答案作为最终解决方案。太好了。现在没有进一步的建议。这实际上是一段对许多人来说非常方便的代码不同的场景。谢谢分享马丁!