[JS] loop avec setTimeout

Résolu/Fermé
ghFrankfurt Messages postés 207 Date d'inscription mardi 16 novembre 2010 Statut Membre Dernière intervention 10 décembre 2014 - Modifié par ghFrankfurt le 4/07/2013 à 16:42
ghFrankfurt Messages postés 207 Date d'inscription mardi 16 novembre 2010 Statut Membre Dernière intervention 10 décembre 2014 - 5 juil. 2013 à 10:10
Bonjour,

Je cherche à faire un loop setTimeout incluant la pause.

En premier lieu j'ai la fonction d'initialisation:

function init()
{
    timer = new Timer('init();', 60000);
}


Et en second lieu j'ai la fonction (classe) qui me permet de faire des pauses:

function Timer(callback, delay) {
    var timerId, start, remaining = delay;

    this.pause = function() {
        window.clearTimeout(timerId);
        remaining -= new Date() - start;
    };

    this.resume = function() {
        start = new Date();
        timerId = window.setTimeout(callback, remaining);
    };
 
 
    this.resume(); //on démarre le timer

    showContent(); //affiche le contenu ajax
}


Le code fonctionne bien au départ. Il fait correctement la pause et reprend au bon endroit. Par contre, au bout d'un certain moment tout commence à s'accélérer. Comme s'il y avait plusieurs instances de timer. Même si je met le timer en pause, il continue alors qu'au début il n'y pas ce problème.

Du coup j'ai tenté de rajouté
timer = null;
delete timer;

dans init() avant l'instanciation mais rien à faire. Toujours le même problème.

Quelqu'un aurait une idée?
Merci

A voir également:

1 réponse

ghFrankfurt Messages postés 207 Date d'inscription mardi 16 novembre 2010 Statut Membre Dernière intervention 10 décembre 2014 23
5 juil. 2013 à 10:10
J'ai résolu en rajoutant une méthode (que j'appelle dans le init) et qui réinitialise toutes les variables à null.
Merci quand même :)
0