【问题标题】:Node.js - piping a readable stream to http responseNode.js - 将可读流传送到 http 响应
【发布时间】:2017-09-24 11:55:48
【问题描述】:

我正在从 nodeschool.io (learnyounode) 做 node.js 练习。其中一个练习涉及创建一个 http 服务器,该服务器从可读文件流中提供文本文件。我对异步编程很陌生。我想出的解决方案是:

var http = require('http');
var fs = require('fs');

var readable = fs.createReadStream(process.argv[3]);
var server = http.createServer(function(request, response) {
    readable.on('data', function(chunk) {
      response.write(chunk);
    })
});

server.listen(process.argv[2]);

这可行,但官方解决方案使用管道而不是 on-data 事件:

var http = require('http')
var fs = require('fs')

var server = http.createServer(function (req, res) {
  res.writeHead(200, { 'content-type': 'text/plain' })
  fs.createReadStream(process.argv[3]).pipe(res);
})

server.listen(Number(process.argv[2]))

这两种方法的(潜在)差异和/或好处是什么?

【问题讨论】:

    标签: javascript node.js asynchronous stream fs


    【解决方案1】:

    嗯,您的版本中有更多代码,这通常意味着您有更多选择来犯错误。考虑一些边缘情况,例如当流抛出错误时会发生什么?

    我不确定行为会是什么(您可以通过例如插入一些不存在的文件名来检查自己)但很可能在您的版本中错误处理效果不佳,可能会忽略错误(因为您'没有监听错误事件)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-04
      • 2018-02-19
      • 2012-08-08
      • 2022-01-06
      • 1970-01-01
      • 2011-01-25
      • 1970-01-01
      相关资源
      最近更新 更多