Первая проблема с загрузкой, setInterval - PullRequest
1 голос
/ 16 октября 2011

Использование setInterval для перезагрузки скрипта - он не перезагружается до того, как пройдет первый промежуток времени (то есть: ждет 120000 мсек перед фактическим отображением контента). Есть лучший способ сделать это?

 <script id="source" language="javascript" type="text/javascript">
setInterval( "reloading();", 120000  );  
  $(function () {
   reloading = function(){
      $.ajax({                                      
      url: 'api.php',                  
      data: "",                      
      dataType: 'json',               
      success: function(data)         
      {
        var id = data[0];             
          _id = id;
        var vname = data[1];           
        var message = data[2]; 
        var timestamp = data[3]; 
        var field1 = data[4]; 
        _field1 = field1;
        var val2 = parseInt(field1, 10) + 1;
        _val2 = val2;
        $('#output').hide().html(timestamp +message ).fadeIn("slow");   
         $('#username').hide().html( vname ).fadeIn("slow");
              } 
    });
}}); 
  </script>

1 Ответ

1 голос
/ 16 октября 2011

1 вы объявляете перезагрузку как глобальную переменную и обращаетесь к ней, не зная, готова ли ваша функция, это не очень хорошая идея.Если по какой-либо причине вашему сайту требуется более 2 минут для загрузки, которая никогда не будет работать.

Если вы хотите поставить в очередь повторную загрузку для обработки один раз каждые 2 минуты и запуска в первый раз без ожидания, вы можетесделайте это следующим образом:

$(function(){
  function reloading(){
    //whatever you want to process goes here
    (...)

    setTimeout(function(){
      reloading();
    }, 120000);

  }

  reloading();
});

это будет загружать ваш код один раз, затем ждать 12 секунд, чтобы запустить его снова, и так далее ...

...