对于Express.js 4.x我找不到我应该返回响应(或下一个函数),所以:
此:
app.get('/url', (req, res) => {
res.send(200, { message: 'ok' });
});
或者这个:
app.get('/url', (req, res) => {
return res.send(200, { message: 'ok' });
});
有什么区别?
答案 0 :(得分:5)
我不同意以上答案。 有时,回调函数可能会根据应用程序的逻辑返回多个响应:
router.post("/url", function(req, res) {
// (logic1)
res.send(200, { response: 'response 1' });
// (logic2)
res.send(200, { message: 'response 2' });
}})
这将引发此错误:
错误[ERR_HTTP_HEADERS_SENT]:发送标头后无法设置标头 给客户
使用 return 实际上可以解决哪些问题。也可以使用if else子句解决。
答案 1 :(得分:4)
你不是。 (req, res)
签名告诉表明这是链中的最后一个函数。它不期望该函数的返回值;你可以添加一个回报,但它会做什么"没有" (超出JS引擎执行一些额外但无意义的开销)
答案 2 :(得分:0)
这取决于。
调用res
或req
回调并不意味着您的路由功能将停止工作
app.get('/url', (req, res) => {
if (true) {
res.send(200, { message: 'ok' });
}
const newFunction = () => {
// stuff useless to your routing function
}
newFunction()
});
在这里newFunction()
会被调用,它是无用的,它将影响您的服务器性能。
您最好每次都使用return res.send(200, { message: 'ok' });
,除非您想在后台进行处理...
通常不能期望超过经典的30秒http请求的过程。 (例如,我每天要花4到5个小时制作一个:D)