知道当 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循环),最后一行将被执行(打印'done')。15 秒后,当 sleep() 函数完成时,它调用给定的回调函数,然后打印“完成睡眠”。
显然我在这里理解了一些错误,因为上述两种方式都阻塞了。有人可以澄清一下吗?
提前致谢, 斯拉格乔约科