如果完成了前5个AJAX函数,则执行下5个AJAX函数
我有以下代码:如果完成了前5个AJAX函数,则执行下5个AJAX函数,ajax,Ajax,我有以下代码: <script type="text/javascript"> $('#send').click(function({ var foo = array(1,2,...,50); var max = 5; for(var i == 0; i < max; i++){ $.ajax({ url: '/ajax.php',
<script type="text/javascript">
$('#send').click(function({
var foo = array(1,2,...,50);
var max = 5;
for(var i == 0; i < max; i++){
$.ajax({
url: '/ajax.php',
type: 'post',
data: {
id: foo[i]
}
......
})
}));
</script>
$(“#发送”)。单击(函数)({
var foo=数组(1,2,…,50);
var max=5;
对于(变量i==0;i
我想让脚本检查是否完成了五个ajax函数,接下来的5个ajax函数将执行
我需要你的帮助。我的英语不好,谢谢!你可以试试这样的方法:
var foo = new Array(50);
var max = 5;
var pointer = 0;
var batchSuccesses = 0;
var batchFailures = 0;
function runNextIfBatchCompleted(){
if(batchSuccesses+batchFailures == max){
batchSuccesses = 0;
batchFailures = 0;
runPostBatch();
}
}
function runPostBatch(){
var currentPointer = pointer;
for(var i = currentPointer; i < Math.min(max*((currentPointer/max)+1),foo.length); i++){
$.post('/ajax.php',
{ 'id' : foo[i] }
)
.done(function(data){
batchSuccesses++;
runNextIfBatchCompleted();
})
.fail(function(data){
batchFailures++;
runNextIfBatchCompleted();
})
pointer++;
}
}
runPostBatch();
var foo=新数组(50);
var max=5;
var指针=0;
var=0;
var=0;
函数runNextIfBatchCompleted(){
如果(BatchSuccessions+batchFailures==最大值){
成功率=0;
batchFailures=0;
runPostBatch();
}
}
函数runPostBatch(){
var currentPointer=指针;
对于(var i=currentPointer;i
这使用jQuery库提供的jqXHR
接口,允许我们在完成一批5个任务时触发done
/fail
您可以在这里看到这一点:在控制台和网络选项卡中。(这使用Get
而不是Post
,但在其他方面是相同的)
您肯定可以提高这段代码的效率,但希望它能让您知道从哪里开始。谢谢,我要试试这个!太棒了!您真是上帝!