2017-04-26 67 views
0

我正在从nodeschool.io(learnyounode)进行node.js练习。其中一项练习涉及创建一个http服务器,该服务器从可读文件流中提供文本文件。我对异步编程非常陌生。我想出了解决的办法是: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]); 

这工作,但官方的解决方案使用的管道,而不是在数据事件:

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])) 

什么(潜在的)差异和/或利益做任何方式?

回答

0

那么,在你的版本中有更多的代码,这通常意味着你有更多的选择来犯错误。考虑一些边缘情况,例如当流引发错误时会发生什么?我很不确定这种行为会是什么(你可以通过插入一些不存在的文件名来检查你自己),但是在你的版本中,错误处理的效果可能不是很好,可能会忽略错误(因为你没有听错误事件)。