Question

Quelqu'un peut-il afficher un exemple de code dans lequel une minuterie en cours d'exécution theres (javascript setTimeout) et de faire la récupération de données ..

essentiellement ce que je cette minuterie n'est d'afficher les nouveaux messages ..

myFunction(param){

//data retrieval operation
//using getJSON.. call displaydata() base on param

settimeout("myFunction()", param, 1000);

}

function displaydata(param){

//processing
alert('test')}

Dois-je utiliser getJSON? Je pense que Theres un problème avec l'appel asynchrone ..

Était-ce utile?

La solution

Deux choses que je remarque que vous devez corriger dans votre code.

  • La méthode setTimeout() a des arguments incorrects
  • Votre appel asynchrone getJSON crée une condition de course entre le prochain délai d'attente et le résultat de la méthode getJSON. Pour ce faire, à la place:

.

function yourFunction(params) {  
    jQuery.getJSON("url", {data}, function(data, textStatus){
        // handle your JSON results

        // Call the timeout at the end of the AJAX response
        // This prevents your race condition
        setTimeout(function(){
            yourFunction(params);
        }, 1000);
    }
} 

setTimeout(function(){
    yourFunction(params);
}, 1000);

Autres conseils

Le premier paramètre doit être une fonction littéral ou une référence de fonction et le second paramètre devrait être les millisecondes.

setTimeout( function() {
    getData('param')
}, 1000);

function getData() {
     $.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?",
        function(data){
          $.each(data.items, function(i,item){
            $("<img/>").attr("src", item.media.m).appendTo("body");
            if ( i == 3 ) return false;
          });
        });
}

Je ne suis pas en utilisant l'argument réel dans mon exemple, mais vous pouvez facilement le mettre à jour pour le faire. Aussi je ne sais pas si vous étiez vote (ce ne fait pas poll / appel récursif).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top