NodeJS事件监听器逻辑

时间:2016-03-06 09:56:23

标签: javascript node.js callback

以下是 Class:http.Server 文档

enter image description here

[Q1]:功能(请求,响应){...} 请求事件的监听器?

[Q2]:根据我的理解,只要有请求,听众就会被调用?

[Q3]:根据以下内容,

enter image description here

这是否意味着如果我将一个监听器作为参数传入,它将自动在请求事件中注册?我可以传入任何函数对象吗?

如果我传入函数(请求,响应){...} ,它是否是由请求事件触发时所谓的回调函数?

不太确定回调函数的定义

1 个答案:

答案 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),因为它将在未来的某个时间由某些其他代码“回调”。