继续执行异步/等待

时间:2018-12-25 16:34:21

标签: javascript node.js promise async-await

大多数文章都提到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();

1 个答案:

答案 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();