javascript - 带有一个回调的多个循环 ajax 请求

标签 javascript jquery ajax dry

this article 所示,我有几个 ajax 请求要执行,然后执行 1 个操作。
然而,不同之处在于我的所有 ajax 请求仅因一个增量参数而异,如下所示:

        $.when(
            // ajax requests
            // 1
            $.ajax({
                url:"https://www.aaaaaaa.com?param="+0,
                crossDomain: true,
                dataType: "jsonp",
                success: function (response) {
                    data = data.concat(response);
                }
            }),
            // 2
            $.ajax({
                url:"https://www.aaaaaaa.com?param="+2500,
                crossDomain: true,
                dataType: "jsonp",
                success: function (response) {
                    data = data.concat(response);
                }
            }),
            // 3
            $.ajax({
                url:"https://www.aaaaaaa.com?param="+5000,
                crossDomain: true,
                dataType: "jsonp",
                success: function (response) {
                    data = data.concat(response);
                }
            })
            // etc. ~10 times

        ).then(function() {
            // action
            console.log(data);
        });

就像 python 一样,我不喜欢重复自己 10 次。
我尝试创建一个 for 循环,但似乎不可能在 $.when() 中编写 for 循环。

有什么想法可以实现这一点吗?
到处找都没有结果。

非常感谢,

最佳答案

可能应该工作的是在 $.when 之前定义一个函数,如下所示:

function createRequest(port) {
     return $.ajax({
         url:"https://www.aaaaaaa.com?param="+port,
         crossDomain: true,
         dataType: "jsonp",
         success: function (response) {
             data = data.concat(response);
         }
     })
}

然后在你的 $.when 中使用它

$.when(createRequest(0), createRequest(2500), createRequest(5000));

如果您想使用更多参数动态创建此函数调用,您可以创建这些请求的 for 循环数组,然后调用 $.when.apply(this, array)

$.when.apply(this, your_request_array)

参见:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply

希望这有帮助

关于javascript - 带有一个回调的多个循环 ajax 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28632608/

相关文章:

javascript - Angular ng-repeat 和过滤器错误(版本 1.1.5 有效,1.2.15 有错误)

javascript - 即使包含所有文件,在 js fiddle 中也看不到 slider

javascript - 拉拉维尔 4 : manipulating ajax data through controller

javascript - ajax调用后如何初始化Datatable

javascript - 如何保护我的表单输入字段数据不被用户更改到控制台?

javascript - Android 警报 "Don' t 再次显示“Web View 中的复选框

javascript - 不使用 IFrame 的 Comet 应用程序

php - 如何在ajax,PHP中的动态DIV中附加文本框字段

jquery - 当使用 jquery .hover() 移动相对定位的 float div 时,如何解决 IE6/IE7 边距消失的问题?

javascript - 使用 Javascript 和 Ajax 从 php 文件获取数据