Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将变量列表作为参数动态包含到Jquery函数中_Javascript_Jquery_Jquery Deferred - Fatal编程技术网

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!如果没有其他建议,我将重新定义我的方法,并接受你的答案作为最终解决方案。太好了。现在没有进一步的建议。这实际上是一段对许多人来说非常方便的代码不同的场景。谢谢分享马丁!