0

我刚刚开始研究 Node.js。我在http://net.tutsplus.com/tutorials/javascript-ajax/node-js-for-beginners/看到了一个教程,我正在尝试执行他作为示例给出的脚本,但它不起作用除非我在“结束”事件中注释掉监听器。

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

如果我在请求的“结束”上评论监听器,上面的代码工作正常,但如果我取消评论,那么它就不能正常工作。有人可以在这里帮助我吗?

谢谢,哈沙。

4

2 回答 2

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);
于 2013-10-24T07:48:15.053 回答
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);
于 2013-10-24T08:13:01.197 回答