他我有问题 我需要将多个AJAX调用发送到同一个URL但具有不同的数据。 我需要以块的形式发送它并等到所有请求都在我的_.each函数之前完成。
我做了一个简单的块函数,它将我的数组切片并将其分组。
我的代码:
---- 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数据的完整数组
我无法执行$ .when(),因为我无法命名该功能 而且我还没弄明白如何在这个函数中使用$ .Deferred() 你能救我吗?
谢谢!
答案 0 :(得分:1)
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);
});