我们为什么要做这个
router.get('/data', async (ctx, next) => {
ctx.body = dummyjson.parse(data);
await next();
});
router.get('/data/:x', async (ctx, next) => {
const newData = dataRepeat.replace('%(x)', ctx.params.x);
ctx.body = dummyjson.parse(newData);
await next();
});
有什么用 await next()
没有它,它会工作得很好 . 与koa 1预期类似的事情 . 在路由器末尾添加了 yield next
.
2 回答
我将尝试使用一个非常简单的示例来解释它:
如果您在浏览器中调用
localhost:3000
,则您的应用中会发生以下情况:你在这里开的第一个
app.use
是middleware
. 因此,请求流首先进入该请求流,将1
记录到控制台 .然后,当你看到
await next()
时,它下游到下一个use
.这里我们只是将
2
记录到控制台 . 当这个完成时(在第二个use
中没有再看到下一个),流程会回到第一个实际等待直到第二个完成的流程 .然后,我们继续将
3
记录到控制台 .希望这会让它更加清晰 .
不,没有必要 . 这取决于您的要求 . 当你调用下一个中间件时,你使用next()函数 .
Check your router module and its version. I have use koa-router module and its version is 7.2.0 for routing. It self handle await next.