Javascript 来自单个请求的ajax请求数组
我有一个特殊的ajax场景,我简直无法理解 这是我试图协调的一系列事件:Javascript 来自单个请求的ajax请求数组,javascript,jquery,arrays,ajax,jquery-deferred,Javascript,Jquery,Arrays,Ajax,Jquery Deferred,我有一个特殊的ajax场景,我简直无法理解 这是我试图协调的一系列事件: 单个请求返回一个id号数组 对于每个id,将发送一个新请求 当所有这些请求都返回后,将收集并呈现它们的数据 这似乎很简单,但我不知道如何表达它 我对链接延迟对象的理解是,它们都会立即实例化,然后在解析时数据会流经它们。但是,当其中一个项是一个数组(可能大小为零)时,这是如何工作的呢 我知道我需要$.when().apply()来观察响应数组 我想也许我需要一个延迟对象,以某种方式代表数组,但我不知道如何表达它 老实说,这听
我想也许我需要一个延迟对象,以某种方式代表数组,但我不知道如何表达它 老实说,这听起来像是一个糟糕的模式,因为您有N+1个请求都被激发。如果阵列中有大量项目和/或大量用户,则最终可能会使用自己的服务器 因此,更好的做法是更改第2点,以便在单个请求中发送所有ID,甚至更改第1点,以从具有给定ID的元素返回所有必需的数据 也就是说,您可以通过将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({
url:“/endpoint1”,
数据:{foo:'bar'},
成功:函数(数据){
var请求=[];
对于(var i=0;i
谢谢!这非常有效,只做了一些小的更改,我想我对这个异步的东西有了更好的处理。我可以理解为什么这种安排是有问题的,但我一直使用一种有限的API。幸运的是,它只适用于少数内部用户,而且涉及的ID不应该超过十几个。没问题,很乐意提供帮助。为错误道歉。。。。很晚了;)很高兴你掌握了正确的语法。