我很难理解为什么我的回调函数需要2个参数,即一个用于请求,一个用于响应?
例如,我将回调函数绑定到我的服务器:
server.on("request", doThis(req, resp));
在我看来,他只需要一个参数(例如req)来存储req
信息(GET,POST,url等)。为什么他需要一秒钟的回应?我在resp中写了这些信息。 (即服务器,所以我的其他脚本)而不是客户端。
每次请求进入时,都会调用回调函数,因此设置了req
参数。我错了吗?但为什么我需要响应参数?我的服务器在响应时需要它,但在我读取/保存请求信息时却不需要它?
答案 0 :(得分:1)
Response参数通常用于发回响应。
请求进来,您在req
(第一个)参数中获取请求的数据,然后使用res
(第二个)参数发回一个响应,如:
server.on('message', function(req, res){
res.send('hello your ip is: ' + req.client.ip);
})
这完全取决于你的框架,但在 expressjs 这就是它的工作原理(或多或少)。
要回答你的问题,你不需要它 - 你根本不能将它作为参数发出(虽然它仍然可以访问)如果你不打算做出响应(这很奇怪且非常罕见)
server.on('message', function(req){
console.log('someone requested "message"')
})
一般来说,尽管最终用户可能永远不会在视觉上看到它,但您总是会发回回复,只是为了确认操作已成功完成。
server.on('save', function(req, res){
saveFile(req.file)
res.sendStatus(200)
})
此外,您可以检查过程是否成功完成 - 如果它确实发送回成功消息,否则发回错误消息。
server.on('save', function(req, res){
saveFile(req.file, function(error){
if(error) res.sendStatus(500)
res.sendStatus(200)
})
})