大多数文章都提到await
替代了then
。但是,我找不到使用await
来执行以下方法的方法,因为它会将执行推迟到run query
完成。只是好奇,有办法吗?
this.database
.run(query, bindings)
.then(result => this.ws.send(result))
.catch(err => this.ws.error(err));
return reply.code(202).send();
答案 0 :(得分:3)
您不能在此处直接使用async / await的事实应该提示您,这里拥有的不是一个好主意。这是一劳永逸的代码,这很少是一个好习惯。
但是,如果这实际上是您想要执行的操作,则可用的一种方法是将异步/等待置于单独的方法中。
单独的方法:
async runQuery(query, bindings) {
try {
const result = await this.database.run(query, bindings);
await this.ws.send(result);
} catch(err) {
await this.ws.error(err);
}
}
主要代码:
this.runQuery(query, bindings);
return reply.code(202).send();