我正在从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]);
这有效,但官方解决方案使用管道而不是数据事件:
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 :(得分:0)
嗯,你的版本中有更多的代码,这通常意味着你有更多的选择来犯错误。考虑一些边缘情况,比如当流引发错误时会发生什么?
我不确定行为会是什么(您可以通过插入一些不存在的文件名来检查自己)但很可能在您的版本中错误处理效果不佳,可能会忽略错误(因为您'不是在听错误事件。)