1

这是一个NodeJS的东西,代码是:

var http = require("http");

function onRequest(request, response) {
  response.writeHead(200, {"Content-Type": "text/plain"});
  response.write("Hello World");
  response.end();
}

http.createServer(onRequest).listen(8888);

我的问题是最后一行怎么来,函数 onRequest 不接受参数。我是 Javascript 新手,但 onRequest 不应该接受函数中定义的 2 个参数吗?任何人都可以帮助我吗?我被困了一个小时:(

4

2 回答 2

2

您实际上并没有调用该方法。你在说它的回调函数是createServer什么。requestListener

从 node.js 文档(http://nodejs.org/api/http.html#http_http_createserver_requestlistener):

http.createServer([requestListener])

返回一个新的 Web 服务器对象。

requestListener 是一个自动添加到“请求”事件的函数。

于 2013-07-09T01:14:44.620 回答
1

onRequest 函数的执行需要 2 个参数。

你的最后一行:

http.createServer(onRequest).listen(8888);

实际上并没有执行 onRequest,尽管我知道为什么你会认为它会执行。它将对 onRequest 函数的引用传递给 http.createServer 函数/方法。

createServer 将保存指向您的 onRequest 函数的指针,然后当请求进入服务器时,它将执行 onRequest。该执行将包括一个请求和响应参数。

有关详细信息,本文对这种模式(称为回调)给出了相当简单明了的解释。它通常与异步编程一起使用,但不是必须的。

http://recurial.com/programming/understanding-callback-functions-in-javascript/

于 2013-07-09T01:20:21.023 回答