Node.js - 这会错过一些错误吗?

标签 node.js

我正在阅读《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/

相关文章:

node.js - 仅将标准输出重定向到/dev/null

node.js - 我应该如何对 Mongoose 中每个相关文档进行文档计数?

javascript - Node.js ReadLine 不等待套接字连接的完整行?

javascript - 无法在 writeFile 方法中传递对象

javascript - 为什么 HTTPs Node 库中的回调被调用两次?如何预防呢?

javascript - 低db : update record at index N

node.js - 谷歌风格的分页

javascript - nodejs请求包中的SSL错误

javascript - 如何将对象中的键与给定的字符串进行匹配?

php - 来自 PHP exec() 的 Node 模块命令不起作用