试图了解节点createServer回调

时间:2013-04-14 03:24:37

标签: 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/');

我正在尝试查找http.js中的createServer查找“函数”,然后将两个对象传递给它(上面的名称为'req'和'res'。我搜索了http.js和我发现的只有:

exports.createServer = function(requestListener) {
  return new Server(requestListener);
};

这是否意味着匿名功能:

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

...作为'requestListener'和...传递

return new Server(requestListener);

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

1 个答案:

答案 0 :(得分:1)

是。在Javascript函数中,您可以将“值”分配给“对象”。由于您可以将对象传递给另一个函数,因此您可以将函数本身作为对象传递。

requestListener是名为createServer的参数requestListener,用于通过它调用Server constructor

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