试图了解节点createServer回调

Joh*_*alt 5 node.js

使用Node.js hello world示例:

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');
Run Code Online (Sandbox Code Playgroud)

我试图找到http.js中的createServer"查找"一个函数然后传递给它的两个对象(上面的名称为'req'和'res'.我通过http.js搜索了我唯一的东西我发现是:

exports.createServer = function(requestListener) {
  return new Server(requestListener);
};
Run Code Online (Sandbox Code Playgroud)

这是否意味着匿名功能:

function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}
Run Code Online (Sandbox Code Playgroud)

...作为'requestListener'传递并且......

return new Server(requestListener);
Run Code Online (Sandbox Code Playgroud)

...是req和res对象传回的地方?

Nat*_*han 1

是的。在 JavaScript 中,函数本身就是可以分配给“对象”的“值”。既然您可以将对象传递给另一个函数,那么您可以将函数本身作为对象传递。

requestListener是用于调用它的createServer命名参数。requestListenerServer constructor

您还可以在 ruby​​ 中看到这一点,您可以在其中调用函数,同时将要在 do 块中执行的代码作为参数传递给它。