5

好的,我正在学习 Node.js,但我无法完全理解这个等待模型。我通过阅读The Node Beginner Book来学习它。其中有一个关于阻塞和非阻塞操作的部分。我不明白的是非阻塞操作。

这是代码:

var exec = require("child_process").exec;

function start(response) {
  console.log("Request handler 'start' was called.");

  exec("ls -lah", function (error, stdout, stderr) {
    response.writeHead(200, {"Content-Type": "text/plain"});
    response.write(stdout);
    response.end();
  });
}

function upload(response) {
  console.log("Request handler 'upload' was called.");
  response.writeHead(200, {"Content-Type": "text/plain"});
  response.write("Hello Upload");
  response.end();
}

exports.start = start;
exports.upload = upload;

start函数调用exec,exec执行ls -lah。那么回调会等待响应吗?如果 exec 执行“find /”怎么办,在我的计算机中完成“find /”命令需要大约 30 秒。由于这是单线程的,如果用户 1 访问启动函数,那么在毫秒内用户 2 也访问启动函数。然后会发生什么?这是否意味着用户 1 将在 30 秒内得到响应,而用户 2 需要等待 1 分钟,因为用户 1 仍在执行“查找 /”?

对不起,如果我的问题太无聊了。谢谢阅读!

4

1 回答 1

4

In node.js all I/O operations works asynchronously. Both find operations will be run in parallel. Try read this: Understanding the node.js event loop.

于 2012-08-23T10:38:05.820 回答