在第2行,有'request'和'response'参数要接收,但是在第6行,在createServer调用中,我传递了请求处理函数,没有参数。如果我没有在调用时传递它们,这两个特定参数来自哪里?
var http = require("http");
function requestHandler(request, response) {
console.log();
response.end();
}
var server = http.createServer(requestHandler);
server.listen(3000);
答案 0 :(得分:0)
// importing the http module
var http = require("http");
// defining what happens when a request hit the server (a.k.a callback function)
function requestHandler(request, response) {
console.log();
response.end();
}
// creating a server and linking the previously defined request handler.
var server = http.createServer(requestHandler);
server.listen(3000);
由于您已经定义了此处理程序作为参数及其作用所采用的内容,因此您只需提供函数的名称以将其链接到新创建的服务器。
换句话说,您将函数本身作为参数传递给createServer函数。函数是JavaScript中的第一类。
您在请求处理程序中命名的参数可帮助您读取请求并写入响应。
答案 1 :(得分:0)
Pragma: no-cache
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: PUT, GET, POST, OPTIONS
Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept
Access-Control-Max-Age: 86400
Transfer-Encoding: chunked
Cache-Control: no-store, must-revalidate, no-cache, post-check=0, pre-check=0
Date: Wed, 15 Mar 2017 03:39:49 GMT
Set-Cookie: PHPSESSID=1ng3l10lvrrovlmdbij5chv2f5; path=/
Server: Apache
Content-Type: application/json
Expires: Thu, 19 Nov 1981 08:52:00 GMT
和request
参数来自实际调用请求处理程序的脚本。
节点服务器在监听3000端口时,会捕获请求,对它们进行一些内部管理(我假设,我不知道那里发生了什么),创建响应对象,并调用处理程序在允许它返回内容的上下文中。
这是一个非常简单的无关同步例子。在定义response
时,我们只定义一个函数来记录传递的内容。然后将该函数传递给callback
,它将使用它来完成日志。
usesCallback