我正在使用Koa2
框架和Nodejs 7
以及本机异步/等待函数。而且我正在尝试在promise解析后为结果渲染模板(koa-art-template
模块)。
const app = new koa()
const searcher = require('./src/searcher')
app.use(async (ctx) => {
const params = ctx.request.query
if (ctx.request.path === '/') {
searcher.find(params).then((items) => {
await ctx.render('main', { items })
})
}
})
我想等待searcher
模块获取项目,但Koa给我错误
await ctx.render('main', { items })
^^^
SyntaxError: Unexpected identifier
如果我要设置等待searcher.find(params).then(...)
,应用程序将起作用,但不会等待项目。
答案 0 :(得分:4)
await
用于等待promises得到解决,因此您可以将代码重写为:
app.use(async (ctx) => {
const params = ctx.request.query
if (ctx.request.path === '/') {
let items = await searcher.find(params); // no `.then` here!
await ctx.render('main', { items });
}
})
如果searcher.find()
没有返回真正的承诺,您可以尝试这样做:
app.use(async (ctx) => {
const params = ctx.request.query
if (ctx.request.path === '/') {
searcher.find(params).then(async items => {
await ctx.render('main', { items })
})
}
})
答案 1 :(得分:0)
此代码现在适用于我:
const app = new koa()
const searcher = require('./src/searcher')
app.use(async (ctx) => {
const params = ctx.request.query
if (ctx.request.path === '/') {
searcher.find(params).then((items) => {
await ctx.render('main', { items })
})
}
})