node.js: обратный вызов цикла while работает не так, как ожидалось

Зная, что когда Node.js работает асинхронно, напишите что-то вроде этого:

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

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

... вызовет sleep (), заблокирует сервер на время цикла while (15 сек) и только потом напечатает "сделанный" на консоль. Насколько я понимаю, это потому, что Node.js предоставляет JavaScript доступ только к основному потоку, и, следовательно, эта штука остановит дальнейшее выполнение.

Поэтому я понимаю, что решение этой проблемы заключается в использовании обратных вызовов:

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

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

console.log("DONE");

Так что я подумал, что это напечатаетСДЕЛАННЫЙ' и через 15 сек. 'спал, поскольку функция sleep () вызывается и передается указатель на функцию обратного вызова. Пока эта функция работает (цикл while), будет выполнена последняя строка (print 'сделанный'). Через 15 секунд, когда функция sleep () завершает работу, она вызывает данную функцию обратного вызова, которая затем выводитспал ».

Видимо я тут что-то не так понял, потому что оба вышеперечисленных способа блокируют. Кто-нибудь может уточнить, пожалуйста?

Спасибо заранее, Slagjoeyoco

Ответы на вопрос(4)

Ваш ответ на вопрос