将变量列表动态包含到 Jquery 函数中作为参数

Dynamic include of a list of variables into a Jquery function as parameters

如果事先不知道变量的名称和数量,如何将变量列表动态注入函数。特别是:

我正在尝试替换此 "hardcoded" 版本:

$.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);
});

换句话说,如何为我的案例创建 'it' 的等价物。这是完全错误的: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" 解析时完成。

您可以在此处阅读有关承诺的更多信息: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise

希望对您有所帮助