2009-09-29 10 views
1

J'ai une fonction qui retourne un entier (le score de réputation actuel pour un utilisateur sur un site communautaire). Ce nombre augmente ou diminue souvent en fonction de la façon dont leurs commentaires et soumissions sont votés. Je voudrais "interroger" toutes les 30 secondes environ pour voir si elle a changé, et si c'est le cas, mettre à jour le numéro que je montre.Essayer d'appeler une fonction toutes les 3 minutes en utilisant JavaScript

Dans un autre thread StackOverflow, je trouve cet extrait de code JavaScript qui semblait utile:

function listen() { 
    $.get("/mylongrequestfile", {}, function(data) { 
    $("#mydiv").html(data); 
    listen(); // then launch again 
    })); 
}; 

-je remplacer juste/mylongrequestfile avec ma fonction? J'essaie mais ça ne marche pas très bien. Comment puis-je utiliser ce code ou un autre extrait pour saisir et afficher cette valeur toutes les 30 secondes?

Répondre

5

Vous pouvez utiliser

window.setInterval

qui

appelle une fonction à plusieurs reprises, avec un retard de temps fixe entre chaque appel à cette fonction.

var intervalID = window.setInterval(yourfunctionname, 300); 

Ceci s'exécute dans un délai de 300 millisecondes.

arguments Callback

setInterval() passeront le nombre de millisecondes fin le rappel a été appelée dans la fonction de rappel, ce qui peut le confondre si elle attend quelque chose d'autre comme argument. Pour contourner ce problème, utilisez une fonction anonyme pour appeler votre callback.

La même technique peut être utilisée si vous devez passer un argument à votre fonction de rappel, mais en avez besoin pour travailler dans Internet Explorer, qui ne supporte pas l'envoi de paramètres supplémentaires avec setInterval().

var intervalID = setInterval(function() { YourFunction(); }, 300); 
+0

Que dois-je faire avec le "var" à l'avant? En ce moment j'utilise Il semble que je puisse utiliser Cela fonctionnerait-il? – bflora2

+0

var est utilisé pour la déclaration de variables en javascript. – rahul

+1

Pour éviter toute dépendance, il vaut la peine de mentionner que le paramètre "retard" n'est pris en charge que sur Mozilla (il provient en fait des navigateurs Netscape des années 1990) et tend à avoir des valeurs qui dérivent de la réalité. Voir https://bugzilla.mozilla.org/show_bug.cgi?id=512259 où Brendan Eich dit qu'il est temps de s'en débarrasser, et https://bugzilla.mozilla.org/show_bug.cgi?id=394769 où faire ainsi est discuté plus longuement, et l'inexactitude potentielle de la valeur est mentionnée. Plus important encore, ne l'utilisez pas :-) – NickFitz

0
var listener = function() { 
$.get("http://www.domain.tld/script/", {}, function(data) { 
    $("#mydiv").html(data); 
})); 
}; 

var interval = setInterval(listener, 30000); 
Questions connexes