好的,我正在学习 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 仍在执行“查找 /”?
对不起,如果我的问题太无聊了。谢谢阅读!