gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 19:15:02 25 4
gpt4 key购买 nike

我有一个特殊的 ajax 场景,我无法理解。

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

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

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

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

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

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

最佳答案

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

因此,最好更改点 2,以便在单个请求中发送所有 ID,甚至更改点 1 以从具有给定 ID 的元素返回所有必需的数据。

也就是说,您可以通过将 jQuery 的 AJAX 方法返回的 promise 保存到一个数组,然后将其应用于 $.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...
});
}
});

关于javascript - 来自单个请求的 ajax 请求数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35977116/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com