一直在关注这个精彩的教程。作为 Javascript 和函数式编程的新手,我想了解非阻塞的本质含义。我故意在我的 JS 代码中添加了 10 秒的“睡眠”,以实现阻塞行为。
function route(pathname, handle)
{
console.log("About to route a request for :"+pathname);
if(typeof handle[pathname]==='function')
{
handle[pathname]();
}
else
{
console.log("No request handler for "+pathname);
}
sleep(10000);
console.log("Exiting router");
}
function sleep(milliSeconds)
{
var startTime = new Date().getTime(); // get the current time
while (new Date().getTime() < startTime + milliSeconds); // hog cpu
}
exports.route=route;
此代码被用作另一个“服务器”脚本的回调,我从浏览器调用该脚本。我希望一旦我同时向我的服务器脚本发出 100 个请求,我会在 10 秒后得到并行的 100 个响应。但是这段代码会一一遍历请求。这肯定失败了 node.js 背后的哲学,对吗??当我在 Java servlet 中编写如此糟糕的代码并在 Tomcat 上运行时,这甚至不会发生!
在这种情况下的另一个观察结果是请求没有按时间顺序处理 - 它们是随机执行的。这对我来说听起来不太好!!
我相信我的代码存在一些问题 - 请帮助我理解这里的概念,并回答我的 2 个查询(另一个关于年表的查询)。
谢谢 !