koa使用await无效

function timeout(ms) {
  return new Promise(resolve => {
    setTimeout(resolve, ms);
  });
}

app.use(async (ctx, next) => {
  await timeout(1000);
  //为什么下面的代码没有执行,前端就得到了返回
  ctx.status = 200;
  ctx.body = { success: true };
});

代码如上,使用 await timeout(1000)模拟数据库等异步操作
当有一个请求过来的时候, await timeout之后的代码还没有执行前端就会得到返回404
然后执行 ctx.status = 200;的时候会报错AssertionError [ERR_ASSERTION]: headers have already been sent
把 await timeout去掉之后,前端就能得到正确的返回。
请问这个什么原因?如何解决?

阅读 3.2k
1 个回答

我发现是我自己写的logger里面没有用await

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题