Продолжить выполнение с помощью async / await - PullRequest
0 голосов
/ 25 декабря 2018

В большинстве статей упоминается, что 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 голосов
/ 25 декабря 2018

Тот факт, что вы не можете напрямую использовать 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();
...