来自单个请求的 ajax 个请求的数组

An array of ajax requests from a single request

我有一个奇怪的 ajax 场景,我就是无法理解。

这是我试图协调的事件顺序:

  1. 单个请求returns ID 号数组。
  2. 对于每个 ID,都会发送一个新请求。
  3. 当所有这些请求都返回后,将收集并呈现它们的数据。

看起来很简单,但是我不知道怎么表达。

我对链接延迟对象的理解是它们都是立即实例化的,然后数据在解析时流过它们。但是,当其中一项是数组(可能大小为零)时,这是如何工作的?

我知道我需要 $.when().apply() 来观察收到的响应数组。

我想也许我需要一个以某种方式代表数组的延迟对象,但我不知道如何表达它。

老实说,这听起来像是一个不好的模式,因为你有 N+1 个请求都被触发了。如果数组 and/or 中有很多项目,很多用户最终可能会对自己的服务器进行 DDOS 攻击。

因此,最好更改第 2 点,以便在单个请求中发送所有 ID,甚至将第 1 点更改为 return 来自具有给定 ID 的元素的所有必需数据.

也就是说,您可以通过将 return 由 jQuery 的 AJAX 方法编辑的承诺保存到一个数组,然后将其应用于 $.when(),像这样:

$.ajax({
    url: '/endpoint1',
    data: { foo: 'bar' },
    success: function(data) {  
        var requests = [];
        for (var i = 0; i < data.ids.length; i++) {
            requests.push(
                $.ajax({           
                    url: '/endpoint2'
                    data: { id: data.ids[i] }
                })
            );
        }

        $.when.apply($, requests).done(function() { 
            // do something when all AJAX requests have completed here...
        });
    }
});