一个简单的问题,如果我的路由设置有一系列回调,例如
app.route('/myroute').post(callback1, callback2, callback3);
我在每个回调上调用next(),除了最后一个回调。
假设我使用我的' res'在callback2上呈现和发回响应的对象,但我仍然想在callback3上做一些处理,它不需要与客户端交互或返回任何内容。
即使callback1或callback2使用res对象返回响应,我的callback3也会一直执行吗?
做一些测试表明它确实调用了callback3,但有些人说如果res返回响应,expressjs将终止调用链。所以我不想有任何疑问,这里的行为有明确的答案吗?
答案 0 :(得分:1)
如果您在next()
中呼叫callback2
,则会执行callback3
中的代码。在callback2
中唯一“完成”的是HTTP请求。连接将被关闭,因为您已经发送了响应。之后发送回复的任何进一步尝试都将导致:Error: Can't render headers after they are sent to the client.