Pau*_*aul 3 ajax jquery webpage freeze
我有一些javascript,可以触发大约100个调用php脚本.php脚本占用大量内存并需要几秒钟才能完成,然后返回json响应pass或fail.
我不希望ajax调用是异步的,因为服务器会停止运行100个自身的实例,所以我尝试使用同步,唯一的问题是它冻结网页,而它一次调用脚本一个调用.
如何一次启动一个ajax调用而不冻结我正在使用的页面?
var a = [];
a[0] = 'test';
a[1] = 'hello';
a[2] = 'another';
$(document).ready(function(){
$.each(a, function(k,v) {
$.ajax({
url:'/this-script-takes-a-few-seconds-to-complete.php',
async:false,
data: {foo: v},
success: function(data){
console.log(data);
}
});
});
});
Run Code Online (Sandbox Code Playgroud)
Nic*_*ver 15
你可以输入一个执行下一个调用的函数,并从你的success处理程序中调用它,如下所示:
$(function(){
var i = 0;
function nextCall() {
if(i == a.length) return; //last call was last item in the array
$.ajax({
url:'/this-script-takes-a-few-seconds-to-complete.php',
data: { foo: a[i++] },
success: function(data){
console.log(data);
nextCall();
}
});
}
nextCall();
});
Run Code Online (Sandbox Code Playgroud)
虽然......更好的方法是不要拨打100个电话,除非这是一个类型的测试套件,我会重新访问整个方法.