setInterval seltsames Verhalten in nodejs

Ich möchte jede Sekunde eine Funktion ausführen. Die Ausführung der Funktion selbst dauert 3 Sekunden. Das Ergebnis ist, dass jedes Intervall mit einer Differenz von @ ausgeführt wir<function execution time>*2+<setInterval delay>

Ich habe den folgenden Beispielcode geschrieben:

var seconds = 3;

setInterval(
    function(){
            console.info(new Date().toString());
            var waitTill = new Date(new Date().getTime() + seconds * 1000);
            while(waitTill > new Date()){}
    },1000
);

und jede Iteration ist wie in der Formel angegeben:

Wed Jul 13 2016 09:49:07 GMT+0300 (IDT)
Wed Jul 13 2016 09:49:14 GMT+0300 (IDT)
Wed Jul 13 2016 09:49:21 GMT+0300 (IDT)
Wed Jul 13 2016 09:49:28 GMT+0300 (IDT)

die Dokumentation gibt dieses Verhalten nicht an. Das Ergebnis, von dem ich dachte, dass es so ist, dass jede Iteration nach 1 Sekunde ausgeführt wird, unabhängig davon, wie lange die Ausführung der Intervallfunktion dauert.

Was ist los

jede Information bezüglich des Problems wäre sehr dankbar.

Vielen Dank

using Nodejs 6.3.0

aktualisiere

versuchte diesen Code im Browser ... google chrome ... hier wird das Intervall alle 3 Sekunden ausgeführt, was immer noch komisch ist.

aktualisiere

Vielen Dank für alle Ihre Kommentare, eine letzte Sache, die nicht klar ist. warum in NodeJS, wenn ich setInterval () auf 1 Sekunde gesetzt habe und die Funktionsausführung 3 Sekunden dauert, warum die nächste Ausführung 7 Sekunden statt 4 Sekunden oder sogar 3 Sekunden ist. das erscheint mir wirklich seltsam. ist das ein akzeptables verhalten?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage