Infini Boucle de Minuterie avec javascript ( pas de setInterval)?

M'a demandé (par un ami) pour construire un timer (infini qui écrit une ligne à chaque seconde), mais sans setInterval.

Je résolu avec :

var i = 0;

    function k(myId, cb)
    {
        setTimeout(function ()
        {
            console.log(myId);
            cb();
        }, 1000);
    }

    function go()
    {
        i++;
        k(i, go);
    }

    go();

Et il est de travail.

Le problème est que j'ai peur, il va y avoir une pression sur la mémoire. Il crée en fait une récursivité et après un certain temps (une semaine ou quelque chose) - le processus de consommer beaucoup de mémoire. (la pile n'est jamais libéré)

Comment puis-je changer mon code afin de ne pas être beaucoup de mémoire consommer?

"j'ai peur qu'il va y avoir une pression de mémoire" - Vous êtes inquiet qu'il peut être, ou vous l'ai testé et il est? Vous mentionnez fonctionner pour un week - avez-vous réellement le faire et ont un problème? Comme mentionné dans les réponses ci-dessous ce n'est pas la récursivité. Aussi, pourquoi la triple fonction de la configuration avec go() et k() et la fonction anonyme? Vous pourriez faire la console.log() dans go() et puis ne setTimeout(go,1000).

OriginalL'auteur Royi Namir | 2012-11-22