我正在阅读《Node.js 实践》。有一个简单的静态文件服务器的例子,如下:
var server = http.createServer(function(req, res) {
var url = parse(req.url);
var path = join(root, url.pathname);
var stream = fs.createReadStream(path);
stream.pipe(res);
stream.on('error', function(err) {
res.statusCode=500;
res.end('Internal Server Error');
});
});
我的问题是,如果在将“错误”处理程序添加到流之前,stream.pipe() 调用遇到错误,会发生什么情况?它会“错过”这个错误吗?
谢谢!
最佳答案
当您编写stream.pipe(res)
时,并不意味着流式传输将立即从该行开始,它只会被安排在请求处理程序中的代码完成后运行(Node 在单个线程中运行代码,因此它一次只能做一件事)。
请求处理程序完成后,控制权将交还给内部 Node 事件循环,该循环将检查是否有任何 I/O 要执行,例如处理流。此时,错误
处理程序已经就位,可以处理任何错误。
关于Node.js - 这会错过一些错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19304564/