JQuery getJSON intérieur SetTimeOut minuterie
-
13-09-2019 - |
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 ..
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éthodegetJSON
. 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).