他说,我有一个问题,我需要发送多个AJAX调用到同一个URL,但数据不同。我需要将其分块发送,并等待所有请求完成,然后再执行每个函数。
我做了一个简单的区块函数,将我的数组切片并将其分为多个组。
我的代码:
---- js ----
batch = [0,1,2,3,4,5,....] // big array
var xhr = chunk(batch, 20);
for (i=0; i < xhr.length ; i++ ) {
//loop number of time of xhr.length
ajax.call("/", "POST", {batch: xhr[i]}).done(function(resp){
arrayResp.push(resp);
});
}
/// after all ajax calls and arrayResp is done
exectue
_.each(arrayResp, function (element) {
//do somting
});
----- /js -----
我需要在最后得到一个完整的数组来保存我所有的resp数据
我不能做$。当(),因为我不能命名函数,我也不知道如何使用$。deverred()在这个函数中你能帮我吗?
谢谢
var res = [];
// this may not be needed
var arrayResp = [];
batch = [0,1,2,3,4,5,....] // big array
var xhr = chunk(batch, 20);
for (i=0; i < xhr.length ; i++ ) {
//loop number of time of xhr.length
// push `ajax` jQuery promise to `res`
res.push(
ajax.call("/", "POST", {batch: xhr[i]})
// this may not be needed,
// see `arguments` at `.then`
.done(function(resp){
arrayResp.push(resp);
})
);
}
// when all `xhr` complete ,
// process array of `xhr` jQuery promises
$.when.apply($, res)
.then(function() {
// do stuff with `arrayResp``
console.log(arrayResp, arguments);
});
问题内容: 我的document.ready()中有一些ajax调用 喜欢 : 我如何强制它等待,直到我们从ajax请求获得所有回叫之前不继续? 问题答案: 我根本不喜欢任何答案,最好的方法(自Jquery 1.5+起)是使用Deferred对象,这些是操纵异步调用的对象,可以解决: 这样,myFunc会在执行2个ajax调用之后执行,如果其中一个出错,则执行myFailure。 您可以在jque
问题内容: 我需要等到我所有的ajax函数都完成后,再继续执行。 我的特殊情况是,在提交表单之前,我需要翻译表单中的某些字段。我通过ajax调用将其转换为外部站点。根据表单中的某些值,我需要进行更多或更少的翻译。完成所有翻译后(如果有),我必须使用ajax验证表单,如果表单有效,则提交。 这是我的方法: 首先,我有一个函数发送ajax调用并对接收到的数据进行处理: 然后,当要提交表单时,我将执行以
问题内容: 我正在使用Selenium 2 WebDriver来测试使用AJAX的UI。 有没有一种方法可以使驱动程序稍稍等待Ajax请求将完成。 基本上我有这个: 问题答案:
问题内容: 嗨,我的脚本中有2个Ajax调用,我需要它们运行asnyc以节省时间,但是我需要第二个才能等待第一个完成。 有什么想法吗?谢谢 问题答案: 如果使用jQuery 1.5+,则可以使用jQuery 完成。诸如此类的东西(缩短了ajax的简洁性,只需像上面那样传递对象) 您不知道它们将以什么顺序返回,因此,如果您手动滚动此请求,则需要检查另一个请求的状态并等待它返回。
问题内容: 如何更改以下代码,以触发两个异步操作并有机会同时运行? 我需要做这样的事情吗? 问题答案: TL; DR 不要在获得承诺的问题中使用模式,而是分别等待它们;而是使用(至少现在): 虽然您的解决方案 确实 并行运行这两个操作,但如果两个诺言都被拒绝,它就无法正确处理拒绝。 细节: 您的解决方案并行运行它们,但始终等待第一个完成,然后再等待第二个。 如果您只想启动它们,并行运行它们,并获得
问题内容: 我如何更改以下代码,以触发两个异步操作并有机会同时运行? 我需要做这样的事情吗? 问题答案: TL; DR 不要在获得承诺的问题中使用模式,而是分别等待它们;而是使用(至少现在): 虽然您的解决方案确实并行运行这两个操作,但是如果两个诺言都被拒绝,它就无法正确处理拒绝。 细节: 您的解决方案并行运行它们,但始终等待第一个完成,然后再等待第二个。如果您只想启动它们,并行运行它们,并获得两