How to execute "setInterval" without initial delay?

4

In this code below, it updates a div every 20 seconds. Only when I enter the page I have to wait 20 seconds for it to appear. I wish he had already appeared at the beginning of the page.

<div id="latestData"><img src="img/loading3.gif" /></div>

<script src="http://code.jquery.com/jquery-latest.js"></script><script>$(document).ready(function(){setInterval(function(){$.get("includes/principal/contador_mapa.php", function (result) {    
              //nome da pagina com o select mysql
              $('#latestData').html(result);  // nome da DIV
          });
       }, 20000); // segundos
    });
</script>
    
asked by anonymous 01.10.2015 / 04:46

2 answers

1

You can create a function with the code of this request and call it before putting it in setInterval .

$(function () {
    function getContadorMapa() {
        $.get("includes/principal/contador_mapa.php", function (result) {
            $('#latestData').html(result);
        });
    }

    getContadorMapa(); // primeira chamada
    setInterval(getContadorMapa, 20000);
});
    
01.10.2015 / 05:20
1

You can do a function to the part that returns itself, and when executed the first time it leaves itself as argument in setInterval .

$(function () {
    var $latestData = $('#latestData'); // para ficar em cache e não precisar de fazer mais que 1 vez
    function contadorMapa() {
        $.get("includes/principal/contador_mapa.php", function (result) {
            $latestData.html(result);
        });
        return contadorMapa; // <-- assim quando fôr executada a primeira vez deixa no seu lugar a função
    }
    setInterval(getContadorMapa(), 20000);
});
    
01.10.2015 / 10:18