Nic*_*cky 15 javascript node.js express typescript
对于 Express.js 4.x,我无法确定是否应该返回响应(或下一个函数),因此:
这个:
app.get('/url', (req, res) => {
res.send(200, { message: 'ok' });
});
Run Code Online (Sandbox Code Playgroud)
或这个:
app.get('/url', (req, res) => {
return res.send(200, { message: 'ok' });
});
Run Code Online (Sandbox Code Playgroud)
有什么区别?
Ahm*_*rib 18
我不同意上面的答案。有时回调函数可以返回多个响应,具体取决于应用程序的逻辑:
router.post("/url", function(req, res) {
// (logic1)
res.send(200, { response: 'response 1' });
// (logic2)
res.send(200, { message: 'response 2' });
}})
Run Code Online (Sandbox Code Playgroud)
这将引发此错误:
错误 [ERR_HTTP_HEADERS_SENT]:发送到客户端后无法设置标头
这实际上可以通过使用return来解决。也可以通过使用 if else 子句来解决。
Mik*_*ans 14
你没有。该(req, res)
签名告诉表示,这是在链中的最后一个函数,它不指望从这个函数返回值。您可以添加 return 语句,但除了 JS 引擎执行一些额外的(但无意义的)开销之外,它不会“做任何事情”。
Tho*_*tre 10
这取决于。
调用res
orreq
回调并不意味着您的路由功能将停止工作
app.get('/url', (req, res) => {
if (true) {
res.send(200, { message: 'ok' });
}
const newFunction = () => {
// stuff useless to your routing function
}
newFunction()
});
Run Code Online (Sandbox Code Playgroud)
在这里,它将newFunction()
被调用,但它没有用,它会影响你的服务器性能。
你最好return res.send(200, { message: 'ok' });
每次都使用,除非你想在后台创建一个进程......
该过程通常不会超过经典的 30 秒 http 请求。(例如,我正在制作一个每天需要 4 或 5 小时的作品:D)
归档时间: |
|
查看次数: |
7875 次 |
最近记录: |