Node.js每个请求都有奇怪的多个代码执行

时间:2012-07-06 19:51:21

标签: node.js

我之前用节点进行了一些实验

以下代码输出" aaa"控制台,浏览器一直在等待响应,正如预期的那样。

var http = require("http");

http.createServer(function (req, res) {
  //res.writeHead(200);
  console.log("aaa");
  //res.end("hello");
  //console.log("test111");
  //res.end("bye");
}).listen(5555);

输出:

aaa

但是,一旦我取消评论第一个res.end,节点就会写出" aaa"一次请求两次到控制台!

var http = require("http");

http.createServer(function (req, res) {
  res.writeHead(200);
  console.log("aaa");
  res.end("hello");
  //console.log("test111");
  //res.end("bye");
}).listen(5555);

输出:

aaa
aaa

最后,当我取消评论所有内容时,

var http = require("http");

http.createServer(function (req, res) {
  res.writeHead(200);
  console.log("aaa");
  res.end("hello");
  console.log("test111");
  res.end("bye");
}).listen(5555);

输出:

aaa
test111
aaa
test111

知道为什么每个请求都会执行两次console.log语句吗?

2 个答案:

答案 0 :(得分:8)

在第一个示例中,浏览器没有得到回复并停在那里。

在第二个示例中,浏览器 得到回复,然后继续请求第二个请求的favicon。

尝试同时记录请求网址:

var http = require("http");
http.createServer(function (req, res) {
  console.log("aaa", req.url);
  res.end("bye");
}).listen(5555);

你会看到服务器正在运行:

aaa /
aaa /favicon.ico

答案 1 :(得分:5)

这有你想要的答案:

NodeJS server incrementing variable by two for every request

正在击中/和/favicon.ico。