koa中,async/await 如何阻塞?

问题描述

需要输出结果为1,2,3
在输出3之前阻塞执行,等待2

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

const Koa = require("koa");
const app = new Koa();
app.use(async (ctx, next) => {
    console.log(1);
    await next()
    console.log(3);
});
app.use(async (ctx, next) => {
    setTimeout(() => {
        console.log(2);
    }, 2000);
});
app.listen(3001);
console.log('http://localhost:3001')

你期待的结果是什么?实际看到的错误信息又是什么?

期望能按照1,2,3的顺序输出

阅读 3.4k
1 个回答
const Koa = require("koa");
const app = new Koa();
app.use(async (ctx, next) => {
    console.log(1);
    await next()
    console.log(3);
});
app.use(async (ctx, next) => {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
          console.log(2);
          resolve();
        }, 2000);
    })
});
app.listen(3001);
console.log('http://localhost:3001')
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题