gpt4 book ai didi

koa - 为什么我们在使用 koa 路由器时要等待 next?

转载 作者:行者123 更新时间:2023-12-04 06:32:21 30 4
gpt4 key购买 nike

我们为什么要做这个

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在路由器的末尾添加。

最佳答案

我将尝试使用一个非常简单的示例来解释它:

const Koa = require('koa');
const app = new Koa();

// middleware
app.use(async function (ctx, next) {
console.log(1)
await next();
console.log(3)
});

// response
app.use(ctx => {
console.log(2)
});

app.listen(3000);

如果您调用 localhost:3000在您的浏览器中,您的应用会发生以下情况:
  • 第一个app.use你在这里解雇的是middleware .所以请求流首先进入那个,记录1到控制台。
  • 然后,当你看到这个 await next() ,它下行到下一个 use .
  • 这里我们只记录2到控制台。当这完成时(并且在第二个 use 中没有看到进一步的 await next ),流程返回到第一个实际等待直到第二个完成的第一个。
  • 然后我们在这里继续记录 3到控制台。

  • 希望这使它更清楚一点。

    关于koa - 为什么我们在使用 koa 路由器时要等待 next?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42532534/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com