Infinite Timer-Schleife mit javascript ( kein setInterval)?

Wurde ich gefragt (von einem Freund) zu bauen, einen timer (unendliche eine, die schreibt eine Zeile pro Sekunde), aber ohne setInterval.

Ich gelöst es mit :

var i = 0;

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

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

    go();

Und es funktioniert.

Das problem ist, dass ich fürchte, es wird ein memory-Druck. Es entsteht tatsächlich eine Rekursion und nach einer Weile (Woche oder so) - der Prozess verbraucht viel Speicher. (stack ist nie freigegeben)

Wie kann ich das ändern mein code, um nicht zu viel Speicher verbrauchen?

  • "Ich fürchte, es wird ein memory Druck" - Sie sind besorgt, dass es sein könnte, oder Sie haben es getestet und es ist? Sie erwähnen es läuft für eine Woche, hast du eigentlich tun, und haben ein problem? Wie bereits in den Antworten unter dieser nicht zu einer Rekursion. Auch, warum die triple-Funktion setup mit go() und k() und die anonym-Funktion? Sie konnten den console.log() innerhalb go() tun, und dann setTimeout(go,1000).
InformationsquelleAutor Royi Namir | 2012-11-22
Schreibe einen Kommentar