这段node.js代码为什么会输出两次console.log的内容?

下面这段代码执行之后,在终端输出两句 hello,初学node,不是很理解为什么会有这样的结果。

require('http').createServer(function(req,res){
    res.writeHead(200,{'Content-Type':'image/png'});
    var stream = require('fs').createReadStream('image.png');
    stream.on('data',function(data){
        res.write(data);
    });
    stream.on('end',function(){
        res.end();
    });
    console.log('hello');
}).listen(3000);

结果截图
图片描述

阅读 7.2k
4 个回答

估计是一次获取图片 一次获取favicon

发了两次请求把

新手上路,请多包涵

访问了两次啊,图片描述

因为data是buffer,在ondata事件里有一段段的buffer,应当在onend事件中把buffer拼接起来,注意buffer隐式转换类型的问题,不能用temp+=data,否则可能会造成乱码。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题