jQuery AJAX请求之间的时间延迟
time delay between jQuery AJAX requests
我建立了一个小的内部web应用程序,查找区号。我遇到的问题是,我有很多地区代码要通过。以至于我的应用程序开始出错。
我想在它里面建立一个计时器,这样我就可以每秒触发一个请求,直到我的数组结束。什么好主意吗?
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>');
}
});
}
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 time = 1000;
$.each(phoneList, function(index, phone) {
window.setTimeout(function() {
$.ajax({
url: 'http://mysite.com/webservice.php',
dataType: 'jsonp',
data: { number: phone, index: index },
success: function() {
...
}
});
}, time);
time += 1000;
});
您最好为整个数组触发一个请求。这将为您节省大量请求以及服务器端的大量初始化和结束。如果数组非常大,您可以选择发送它的块(比如一次发送10个或100个)。
如果之后仍然需要数组,可以跳过for循环。相反,创建一个在请求的成功处理程序中调用自身的函数。重复此操作,直到全局变量到达数组的末尾。
您可以有一个数组的ajax请求有一个串行ajax调用(您可以调用一个接一个的前一个是成功的)。或者你可以让递归函数在成功函数触发后再次调用自己
试试这个
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>');
}
});
}
相关文章:
- Javascript-如何使用bootstrap日期时间选择器自动计算两个时间输入之间的差异
- 用户如何获取两个时间戳之间的对象
- Javascript中的时间延迟
- Javascript:用于 vs jQuery.each() 与时间延迟
- 两个时间对象之间的差异
- 计算两个 yyyyMMddHHmmss 时间戳之间的经过时间
- 以天为单位的 2 个 ember 日期时间对象之间的差异
- 如何执行递归函数以重置/维护滚动事件的时间延迟
- 准确计算两个日期(包括时间)之间的天数
- 对文件的时间/延迟进行基准测试
- 当每一行都打印成功调用时,需要时间延迟
- 在Javascript中使用时间延迟
- d3时间分组之间的转换
- 如何找到两个UNIX时间戳之间的HH:MM:SS差异
- 如何在客户端(js)和服务器(php)上获得时间戳之间的差异
- Javascript中时间戳之间的差异
- 显示具有时间延迟的动态标签
- jQuery AJAX请求之间的时间延迟
- 在相同函数的操作之间添加时间延迟
- 当动画进入精灵表时,设置两帧之间的时间延迟