использовать WebWorker
www.w3.org/TR/workers
или разбить на пакеты и учиться использовать промисы:
var requestAsync = function (cb, ecb) {
var pr = $.Deferred();
$.ajax({
url: url,
type: 'post',
data: {
},
success: function (data) {
if (cb)
cb(data);
pr.resolve();
},
error: function (xhr, status, error) {
if (ecb)
ecb();
pr.resolve();
}
});
return pr;
};
var chunkSize = 5;
var f = function(fcb){
var promises = [];
for (var i = 0; i < Math.min(urls.length, chunkSize); i++)
promises.push(requestAsync(args));
if(promises.length)
$.when.apply($, promises).done(function(){
setTimeout(f.bind(fcb, this), 1);
});
else{
fcb();
}
}
f(function(){
console.log('complete');
});
но стоит помнить о проблемах: jquery промисы не являются промисами а+