如果资源回报提前,ExpressJS会执行callback链吗?

一个简单的问题,如果我有一个callback链的路线设置,例如

app.route('/myroute').post(callback1, callback2, callback3); 

我在每个callback中调用next(),除了最后一个。

假设我使用我的'res'对象来渲染并在callback函数2上发送回应,但是我仍然想对callback函数3做一些处理,而不需要与客户端交互或返回任何东西。

即使callback1或callback2使用res对象返回响应,我的callback函数3是否总是被执行?

做一些testing显示,它确实调用callback3,但有些人说,如果res返回一个响应,expressjs将终止调用链。 所以我不想有任何疑问,这里的行为是否有明确的答案?

如果您在callback2中调用next() ,则将执行callback3的代码。 callback2唯一“完成”的是HTTP请求。 连接将被closures,因为您已经发送了回复。 之后任何进一步的尝试发送响应将导致: Error: Can't render headers after they are sent to the client.