node.js: enquanto o retorno de chamada do loop não está funcionando como esperado

Sabendo que, enquanto o Node.js está trabalhando de forma assíncrona, escrevendo algo assim:

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

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

... chamaria o sleep (), bloquearia o servidor pela duração do loop while (15 segundos) e apenas ENTÃO "pronto" para o console. Tanto quanto eu entendo, isso é porque o Node.js está dando JavaScript somente acesso ao thread principal e, portanto, esse kidn of coisa iria interromper a execução adicional.

Então eu entendo que a solução para isso é usar callbacks:

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

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

console.log("DONE");

Então eu pensei que isso iria imprimir 'DONE' e depois de 15 segundos. 'done sleeping', já que a função sleep () é chamada e recebe um ponteiro para uma função de callback. Enquanto esta função estiver funcionando (o loop while), a última linha será executada (print 'done'). Após 15 segundos, quando a função sleep () terminar, ela chamará a função de callback fornecida, que então imprime 'done sleeping'.

Aparentemente eu entendi algo errado aqui, porque ambos os caminhos acima bloqueiam. Alguém pode esclarecer por favor?

Agradecemos antecipadamente, Slagjoeyoco

questionAnswers(4)

yourAnswerToTheQuestion