我在JavaScript中有一个数组jobs
,想发送到服务器端进行一些处理,由于它是一个很大的数组,为了避免超时,我将其切成小块,例如smallerJobs
var chunk= 50;
for (var i=0; i<jobs.length; i+=size) {
var smallerJobs = jobs.slice(i,i+size);
$.post( "server.php", { jobs: smallerJobs })
.done(function( data ) {
// Show the server result to client
});
}
}
上面的代码有效,但是,由于
post
在JavaScript中是异步的,而不是使用async: false
,如何使上面的代码按顺序运行?即以与数组jobs
相同的顺序,并避免使用DOS
服务器? 最佳答案
您可以在上一个帖子查询成功后运行下一个帖子查询。
将您的post调用转换为一个函数,在成功事件发生时,它将首先对数据执行您想要的任何操作,然后在下一项再次递归调用该函数。
就像是:
function sequentialQuerying(jobArr, currJob){
if(currJob == jobs.length){
return;
}else{
var smallerJobs = jobArr.slice(currJob, currJob+size);
$.post("server.php", {jobs: smallerJobs})
.done(function(data){
//do something with the data if you want
sequentialQuerying(jobArr, currJob += size);
});
}
}