当前位置 : 主页 > 网页制作 > Nodejs >

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

来源:互联网 收集:自由互联 发布时间:2021-06-16
我之前做了一些节点实验 以下代码将“aaa”输出到控制台,并且浏览器会按预期等待响应. var http = require("http");http.createServer(function (req, res) { //res.writeHead(200); console.log("aaa"); //res.end("he
我之前做了一些节点实验

以下代码将“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语句吗?

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

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

尝试也记录请求网址:

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

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

aaa /
aaa /favicon.ico
网友评论