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