我的代码中request.end的监听器有什么问题

时间:2013-10-24 07:42:05

标签: javascript node.js

我刚刚开始研究Node.js.我浏览了http://net.tutsplus.com/tutorials/javascript-ajax/node-js-for-beginners/中的一个教程,我试图执行一个他给出的脚本作为示例,但除非我在'end'事件中注释掉监听器,否则它无法正常工作。

var http = require("http");
http.createServer(function (request, response) {
 // request.on("end", function () {
      response.writeHead(200, {
         'Content-Type': 'text/plain'
      });
      response.end('Hello HTTP!');
  // });
  //request.end();
}).listen(8080);

上面的代码工作正常,如果我在'end'上为请求评论监听器,但如果我取消评论,那么它就无法正常工作。有人可以帮助我。

谢谢, 戒。

2 个答案:

答案 0 :(得分:1)

end调用之后发出response.end()事件,如:

var http = require('http');

http.createServer(function (request, response) {
    request.on('end', function () {
        console.log('end event called');
    });
    response.writeHead(200, {'Content-Type': 'text/plain'});
    response.end('Hello HTTP!');
}).listen(8080);

答案 1 :(得分:1)

end事件监听器上的请求实际上是监听结束事件并在执行该事件后触发回调函数。

您尝试在该事件执行之前触发end事件。将请求end功能移到响应正文之外,这应该有效:

var http = require("http");

http.createServer(function (request, response) {    
    response.writeHead(200, {
        'Content-Type': 'text/plain'
    });    

    request.on("end", function () {      
        console.log("GOOD BYE!");       
    });

    response.end('Hello HTTP!'); 
}).listen(8080);