javascript - js/jquery 传递数组项

标签 javascript jquery jquery-deferred

大家好,我需要一些帮助,帮助我的坏思维大脑:

我有一个对象:

 var ch =  [function1(), function2(), function3(), function4()];

功能示例:

function function1()
            { 

                    return $.ajax({
                        type: "GET",
                        url:url,
                        dataType:"jsonp",
                        success: function(data){}
                    });
            }

我需要以某种方式在这里传递这个对象:

$.when(function1(), function2(), function3(), function4()).done({
  function(data1, data2, data3, data4)
});

当然这个想法是错误的:

$.when(ch) -- which is wrong 

你能帮忙解决这个问题吗?或者也许这是一种错误的做法? 你能给我建议吗?

谢谢!

最佳答案

我认为您的意思是说您想要在数组中的所有Deferred 项都已解决时执行操作。使用 apply 方法可以非常轻松地实现这一点,该方法使用数组的成员作为传递给函数的参数:

$.when.apply($, ch).done(function(data1, data2, data3, data4) {

参见apply有关该方法的更多信息,请参阅 MDN 文档。归根结底,第一个参数是调用的上下文(即函数内的 this ;这里您希望将其保留为 $,即 jQuery 对象)并且第二个是一个数组,其成员将作为函数的参数应用。

关于javascript - js/jquery 传递数组项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8526594/

相关文章:

javascript - Express 中执行的函数顺序与测试困惑

javascript - CSS 和 JavaScript 都没有使用 codeigniter 在移动 View 中加载?

javascript - 禁用 turobolinks 来服务页面特定的 javascript

javascript - Jquery Defers 的顺序执行

javascript - 如何使 jQuery Deferred 对象解析/拒绝具有与另一个 deferred 相同的 'resolved/rejected' 状态?

javascript - Jquery deferred - 在前一个函数完成之前推迟函数调用

javascript - 重构 JavaScript ES6

javascript - React 钩子(Hook)在事件处理程序中不起作用

jquery - 如何将参数传递给 jQuery 对话框 ("close")?

JQuery 查找所有数据元素