如何在KOA 2中编写异步中间件

Shu*_*dia 1 javascript node.js async-await koa koa2

我要解决一个诺言,然后像Koa 2一样呈现一个视图。

async function render(ctx, next) {
  // wait for some async action to finish
  await new Promise((resolve) => { 
   setTimeout(resolve, 5000)
  })
  // then, send response
  ctx.type = 'text/html'
  ctx.body = 'some response'
  await next()
}
Run Code Online (Sandbox Code Playgroud)

但是,当我这样做时,服务器不会发送任何响应(浏览器一直在等待响应,并且超时)。我究竟做错了什么?

m-a*_*n-o 5

我意识到我已经晚了几个月,但是我偶然发现了同一个问题,发现为了使给定的中间件能够等待异步执行,所有前面的中间件都必须这样做await next(),而不是只是next()。确保进行验证,事后看来很明显。

我希望这有帮助。