Javascript jQuery AJAX请求之间的时间延迟
我构建了一个查找区号的小型内部web应用程序。我遇到的问题是我有很多区号要查。如此之多以至于我的应用程序开始出错 我想在其中构建一个计时器,以便每隔一秒左右发出一个请求,直到数组结束。有什么想法吗Javascript jQuery AJAX请求之间的时间延迟,javascript,jquery,settimeout,Javascript,Jquery,Settimeout,我构建了一个查找区号的小型内部web应用程序。我遇到的问题是我有很多区号要查。如此之多以至于我的应用程序开始出错 我想在其中构建一个计时器,以便每隔一秒左右发出一个请求,直到数组结束。有什么想法吗 var phoneList = ["905XXXXXXX","905XXXXXXX","905XXXXXXX","905XXXXXXX","905XXXXXXX",...]; var phoneList_length = phoneList.length; for(i=0; i < phoneL
var phoneList = ["905XXXXXXX","905XXXXXXX","905XXXXXXX","905XXXXXXX","905XXXXXXX",...];
var phoneList_length = phoneList.length;
for(i=0; i < phoneList_length; i++){
$.ajax({
url: 'http://mysite.com/webservice.php',
dataType: 'jsonp',
data: 'number=' + phoneList[i] + '&index=' + i,
type: 'GET',
timeout: 10000,
success: function(data){
$('.phoneReults').append('<li>' + phoneList[data.index] + '</li>');
$('.stateReults').append('<li>' + data.region +'</li>');
$('.cityReults').append('<li>' + data.city +'</li>');
}
});
}
var phoneList=[“905xxxxxx”、“905xxxxxx”、“905xxxxxx”、“905xxxxxx”、“905xxxxxx”、“905xxxxxx”、…];
var phoneList_length=phoneList.length;
对于(i=0;i'+phoneList[data.index]+'');
$('.stateReults').append(''+data.region+' ');
$('.cityrults')。追加(''+data.city+' ');
}
});
}
您最好对整个阵列发出请求。这将为您节省大量的请求以及服务器端的大量初始化和终结。如果数组非常大,您可以选择发送它的块(比如一次发送10个或100个)
如果在此之后仍然需要数组,可以跳过for循环。相反,创建一个在请求的成功处理程序中调用自身的函数。重复此操作,直到全局变量到达数组末尾。您最好对整个数组发出请求。这将为您节省大量的请求以及服务器端的大量初始化和终结。如果数组非常大,您可以选择发送它的块(比如一次发送10个或100个)
function fire(request, i) {
var phone = request.shift();
$.ajax({
url: 'http://mysite.com/webservice.php',
dataType: 'jsonp',
data: 'number=' + phone + '&index=' + i,
etc: ...
});
if (request.length > 0)
setTimeout(fire, 1000, request, ++i);
}
...
// start requests
fire(phoneLists, 0);
如果在此之后仍然需要数组,可以跳过for循环。相反,创建一个在请求的成功处理程序中调用自身的函数。重复此操作,直到全局变量到达数组末尾。尝试此操作
function fire(request, i) {
var phone = request.shift();
$.ajax({
url: 'http://mysite.com/webservice.php',
dataType: 'jsonp',
data: 'number=' + phone + '&index=' + i,
etc: ...
});
if (request.length > 0)
setTimeout(fire, 1000, request, ++i);
}
...
// start requests
fire(phoneLists, 0);
var phoneList = ["905XXXXXXX","905XXXXXXX","905XXXXXXX","905XXXXXXX","905XXXXXXX",...];
var phoneList_length = phoneList.length;
var count = 0;
var timer = setInterval(function(){
if(count != phoneList_length){
SendPhoneList(phoneList[count]);
count++;
}
else{
clearInterval(timer);
}
}, 1000);
function SendPhoneList(phoneList){
$.ajax({
url: 'http://example.com/webservice.php',
dataType: 'jsonp',
data: 'number=' + phoneList + '&index=' + i,
type: 'GET',
timeout: 10000,
success: function(data){
$('.phoneReults').append('<li>' + phoneList[data.index] + '</li>');
$('.stateReults').append('<li>' + data.region +'</li>');
$('.cityReults').append('<li>' + data.city +'</li>');
}
});
}
var phoneList=[“905xxxxxx”、“905xxxxxx”、“905xxxxxx”、“905xxxxxx”、“905xxxxxx”、“905xxxxxx”、…];
var phoneList_length=phoneList.length;
var计数=0;
var timer=setInterval(函数(){
如果(计数!=电话列表长度){
SendPhoneList(电话列表[计数]);
计数++;
}
否则{
清除间隔(计时器);
}
}, 1000);
函数SendPhoneList(电话列表){
$.ajax({
网址:'http://example.com/webservice.php',
数据类型:“jsonp”,
数据:'number='+phoneList+'&index='+i,
键入:“GET”,
超时:10000,
成功:功能(数据){
$('.phoneReults').append(''+phoneList[data.index]+' ');
$('.stateReults').append(''+data.region+' ');
$('.cityrults')。追加(''+data.city+' ');
}
});
}
试试这个
var phoneList = ["905XXXXXXX","905XXXXXXX","905XXXXXXX","905XXXXXXX","905XXXXXXX",...];
var phoneList_length = phoneList.length;
var count = 0;
var timer = setInterval(function(){
if(count != phoneList_length){
SendPhoneList(phoneList[count]);
count++;
}
else{
clearInterval(timer);
}
}, 1000);
function SendPhoneList(phoneList){
$.ajax({
url: 'http://example.com/webservice.php',
dataType: 'jsonp',
data: 'number=' + phoneList + '&index=' + i,
type: 'GET',
timeout: 10000,
success: function(data){
$('.phoneReults').append('<li>' + phoneList[data.index] + '</li>');
$('.stateReults').append('<li>' + data.region +'</li>');
$('.cityReults').append('<li>' + data.city +'</li>');
}
});
}
var phoneList=[“905xxxxxx”、“905xxxxxx”、“905xxxxxx”、“905xxxxxx”、“905xxxxxx”、“905xxxxxx”、…];
var phoneList_length=phoneList.length;
var计数=0;
var timer=setInterval(函数(){
如果(计数!=电话列表长度){
SendPhoneList(电话列表[计数]);
计数++;
}
否则{
清除间隔(计时器);
}
}, 1000);
函数SendPhoneList(电话列表){
$.ajax({
网址:'http://example.com/webservice.php',
数据类型:“jsonp”,
数据:'number='+phoneList+'&index='+i,
键入:“GET”,
超时:10000,
成功:功能(数据){
$('.phoneReults').append(''+phoneList[data.index]+' ');
$('.stateReults').append(''+data.region+' ');
$('.cityrults')。追加(''+data.city+' ');
}
});
}
您可以有一个ajax请求数组来进行一系列ajax调用(您可以在上一次打开成功后逐个调用)。
或者,您可以使用递归函数,该函数在成功函数触发后再次调用自身。您可以使用一个ajax请求数组来进行串行ajax调用(您可以在上一次打开成功后逐个调用)。 或者您可以使用递归函数,该函数在触发成功函数后再次调用自身