【发布时间】:2018-01-06 20:39:22
【问题描述】:
如果我有一个简单的快速路由器,它什么都不返回(未定义),有没有办法从中恢复,或者请求会挂起直到超时?
例如,如果我有这个代码:
const express = require('express');
const app = express();
const router = express.Router();
router.use((req, res, next) => {
console.log('stuck');
return;
});
app.use(router);
app.get('/', (req, res) => res.send('Hello World!'));
app.listen(3000, () => console.log('Example app listening on port 3000!'));
应用程序在打印stuck 后挂起。如果我返回next(),请求会继续,但我想看看是否有办法从空的返回语句中恢复,而无需在某些时候调用next()。
提前致谢!
【问题讨论】:
-
你回来之前为什么不打电话给
next()? -
是的,在这个任意的例子中我完全可以。我将编辑问题以更清楚地表明我想在不调用
next的情况下恢复。在我使用它的实际环境中,无法强制调用next,但我仍想恢复 -
如果没有
next(),您将无法恢复,除非您要禁止处理程序中的任何异步代码。如果处理程序中有异步代码,那么它将在异步代码完成之前返回。这就是为什么必须使用next()。
标签: javascript node.js express return