【发布时间】:2017-05-23 09:44:12
【问题描述】:
我想解决一个承诺,然后在 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()
}
但是,当我这样做时,服务器不会发送任何响应(浏览器一直在等待响应并超时)。我做错了什么?
【问题讨论】:
-
如何声明这个函数供koa使用?
koa.use(render)? -
@OvidiuDolha 是的,我正在导出这个中间件并做一个
const app = new Koa(); app.use(render) -
如果你遇到
koa.use((ctx, next) => render(ctx, next))同样的问题,只是好奇? -
没关系,我只是在一个简单的 koa 种子 (github.com/chentsulin/simple-koa2-example) 上复制了您的示例,并且效果很好……问题一定出在其他地方。您在应用程序中还有哪些其他中间件?另外:你如何启动服务器?你使用的是什么版本的节点?
-
@OvidiuDolha 我也尝试使用您链接到的 simple-koa 示例。在 router.js 文件中添加 : await new Promise((resolve) => { setTimeout(resolve, 10000) }) 会导致立即返回,即由于某种原因,不会发生 10 秒的等待
标签: javascript node.js async-await koa koa2