来自单个请求的 ajax 个请求的数组
An array of ajax requests from a single request
我有一个奇怪的 ajax 场景,我就是无法理解。
这是我试图协调的事件顺序:
- 单个请求returns ID 号数组。
- 对于每个 ID,都会发送一个新请求。
- 当所有这些请求都返回后,将收集并呈现它们的数据。
看起来很简单,但是我不知道怎么表达。
我对链接延迟对象的理解是它们都是立即实例化的,然后数据在解析时流过它们。但是,当其中一项是数组(可能大小为零)时,这是如何工作的?
我知道我需要 $.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...
});
}
});
我有一个奇怪的 ajax 场景,我就是无法理解。
这是我试图协调的事件顺序:
- 单个请求returns ID 号数组。
- 对于每个 ID,都会发送一个新请求。
- 当所有这些请求都返回后,将收集并呈现它们的数据。
看起来很简单,但是我不知道怎么表达。
我对链接延迟对象的理解是它们都是立即实例化的,然后数据在解析时流过它们。但是,当其中一项是数组(可能大小为零)时,这是如何工作的?
我知道我需要 $.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...
});
}
});