2011-10-07 2 views
1

Dans mon application Web, j'ai une barre de statut pour mes utilisateurs où le nombre de nouveaux messages, etc. est affiché. J'utilise Ajax.PeriodicalUpdater pour rafraîchir toutes les 60 secondes. Mais le PeriodicalUpdater fait la première extraction à l'initialisation quand il n'y a pas besoin car les données sont fraîches au chargement de la page.Démarrage différé de Ajax.PeriodicalUpdater

Alors, quelle est votre meilleure pratique pour démarrer le programme de mise à jour 60 secondes après le chargement de la page?

J'utilise un window.setTimeout pour appeler une fonction qui lance le programme de mise à jour, mais y a-t-il quelque chose de mieux?

function statusbarUpdate(){ 
    new Ajax.PeriodicalUpdater({ 
    success: 'statusbar' 
    }, '/status', { 
    method: 'get', 
    frequency: 60, 
    decay: 1 
    }); 
} 
window.setTimeout("statusbarUpdate()", 1000 * 60) 

Répondre

1

Il n'y a rien dans Ajax.PeriodicalUpdater's source qui permet un démarrage différé.

Cependant, pour un peu de sucre syntaxique la dernière ligne peut être neatened:

statusbarUpdate.delay(1000 * 60); 
+0

Merci deux fois: pour la source où je peux voir que ([ligne 220] https://github.com/sstephenson /prototype/blob/1fb9728/src/ajax/periodical_updater.js#L220) est ce qui m'agace: 'this.start()' qui lance l'appel immédiatement et pour ['delay()'] (http: // www .prototypejs.org/api/function/delay) méthode, qui était nouveau pour moi :-) – arnep

+0

En regardant à nouveau la source et je me rends compte qu'il n'y a pas beaucoup de code là-bas, vous pouvez faire une copie et l'altérer de sorte qu'il doesn ' t commencer tout de suite. – clockworkgeek

+0

ce serait une option, mais j'ai dû maintenir ce code sur chaque mise à jour du prototype (bien que je pense qu'il n'y aura pas beaucoup de changement dans cette fonction). – arnep