Javascript jQuery AJAX请求之间的时间延迟

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

我构建了一个查找区号的小型内部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>');
        }
    });
}
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调用(您可以在上一次打开成功后逐个调用)。 或者您可以使用递归函数,该函数在触发成功函数后再次调用自身