2016-03-06 88 views
0

這裏是類別:http.Server文檔的NodeJS事件監聽器邏輯

enter image description here

[Q1]:是功能(請求,響應){...}請求事件的監聽器?

[Q2]:如果從我的理解來看,每當有請求時,監聽者就會被調用?

[Q3]:根據以下,

enter image description here

意思,如果我通過在偵聽器作爲一個參數,它會在請求事件自動記錄我可以傳遞任何功能?目的?

如果我通過函數(請求,響應){...},當它被請求事件觸發時,它是否就是所謂的回調函數?

不太清楚有關回調函數

回答

2

requestListener的定義是你傳遞給http.createServer()方法的功能。如果你傳遞了這個函數,那麼它會在http服務器接收到的每個傳入請求中被調用。

而且,當它被調用時,將按照該順序使用兩個參數,一個request對象和一個response對象進行調用。

您傳遞給http.createServer()的函數requestListener被稱爲callback函數,因爲您傳遞的函數將在稍後被其他代碼調用。

下面是一個簡單的例子:

// 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'); 
    } 
}); 

[Q1]:是函數(請求,響應){...}的請求事件的監聽器?

這是一個回調函數,會自動爲request evnet註冊,因此會針對每個傳入的http請求進行調用。

[Q2]:如果據我瞭解,每當有請求時, 偵聽器被調用?

是的。

[Q3]:這是否表示如果我傳入一個監聽器作爲參數,它會自動註冊請求事件 ?

是的。

我可以傳入任何函數Object嗎?

是的。您必須按照順序將請求和響應適當地聲明爲參數,但是您可以根據需要命名這些參數。它們的值作爲第一個和第二個參數傳遞。參數的名稱是您選擇在函數中使用的任何名稱。通常的約定是使用(req, res)(request, response),因爲這會使其他node.js開發人員更容易識別您的代碼。

如果我傳入函數(request,response){...},請求事件觸發時是否有所謂的 回調函數?

是的。

不太清楚有關回調函數

的定義,它只是你作爲參數傳遞給另一個函數的函數。它可以是一個名爲的函數,它被定義爲一個命名函數,或者它可以是一個內聯匿名函數,如上例所示。它並不重要。它被稱爲callback function,因爲它將在未來某個時間被其他代碼「回調」。