node.js: while-Loop-Callback funktioniert nicht wie erwartet

Wenn Sie wissen, dass Node.js asynchron arbeitet, schreiben Sie etwa Folgendes:

function sleep() {
    var stop = new Date().getTime();
    while(new Date().getTime < stop + 15000) {
        ;
    }
}

sleep();
console.log("done");

... ruft den Befehl sleep () auf, blockiert den Server für die Dauer der while-Schleife (15 Sek.) und gibt dann "done" an die Konsole aus. Soweit ich weiß, liegt dies daran, dass Node.js JavaScript nur Zugriff auf den Hauptthread gewährt, und daher würde diese Art von Dingen die weitere Ausführung anhalten.

Ich verstehe daher, dass die Lösung darin besteht, Rückrufe zu verwenden:

function sleep(callback) {
    var stop = new Date().getTime();
    while(new Date().getTime() < stop + 15000) {
        ;
    }
    callback();
}

sleep(function() {
    console.log("done sleeping");
});

console.log("DONE");

Also dachte ich, dies würde "FERTIG" und nach 15 Sekunden drucken. 'done sleeping', da die Funktion sleep () aufgerufen wird und ein Zeiger auf eine Rückruffunktion übergeben wird. Während diese Funktion ausgeführt wird (die while-Schleife), wird die letzte Zeile ausgeführt (print 'done'). Wenn die Funktion sleep () nach 15 Sekunden beendet ist, wird die angegebene Rückruffunktion aufgerufen, die dann den Ausdruck "Schlaf beendet" ausgibt.

Anscheinend habe ich hier etwas falsch verstanden, weil beide oben genannten Möglichkeiten blockieren. Kann jemand bitte klären?

Vielen Dank im Voraus, Slagjoeyoco

Antworten auf die Frage(4)

Ihre Antwort auf die Frage