以下是 Class:http.Server 文档
[Q1]:功能(请求,响应){...} 请求事件的监听器?
[Q2]:根据我的理解,只要有请求,听众就会被调用?
[Q3]:根据以下内容,
这是否意味着如果我将一个监听器作为参数传入,它将自动在请求事件中注册?我可以传入任何函数对象吗?
如果我传入函数(请求,响应){...} ,它是否是由请求事件触发时所谓的回调函数?
不太确定回调函数的定义
答案 0 :(得分:2)
requestListener
是您传递给http.createServer()
方法的函数。如果您传递该函数,则会在http服务器收到的每个传入请求上调用它。
并且,当它被调用时,将使用两个参数调用它,即request
个对象和response
个对象。
传递给requestListener
的{{1}}函数称为http.createServer()
函数,因为您传递的函数稍后会被某些其他代码回调。
这是一个简单的例子:
callback
[Q1]:是函数(请求,响应){...}请求事件的监听器吗?
这是一个自动为// Create an simple http server that knows about one request URL
var server = http.createServer(function(req, res) {
if (req.url === "/") {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('okay');
} else {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('not okay');
}
});
evnet注册的回调函数,因此会为每个传入的http请求调用。
[Q2]:如果是,根据我的理解,无论何时有请求,都是 听众被召唤?
是
[Q3]:如果我将一个监听器作为参数传入,它是否意味着 在请求事件中自动注册?
是
我可以传入任何函数对象吗?
是。您必须按顺序将参数适当地声明为请求和响应,但您可以根据需要将这些参数命名为。它们的值作为第一个和第二个参数传递。参数的名称是您在函数中选择使用的任何名称。通常的惯例是使用request
或(req, res)
,因为这会使您的代码更容易被其他node.js开发人员识别。
如果我传入函数(请求,响应){...},它是否是所谓的 回调函数是否由请求事件触发?
是
不太确定回调函数的定义
它只是一个函数,您作为参数传递给另一个函数。它可以是名为的函数,它被定义为命名函数,也可以是内联匿名函数,如上例所示。它是什么并不重要。它被称为(request, response)
,因为它将在未来的某个时间由某些其他代码“回调”。