У меня есть класс JavaScript, и я пытаюсь понять, как использовать новые ключевые слова async/await в методе подключения.
module.exports = class {
constructor(url) {
if (_.isEmpty(url)) {
throw `'url' must be set`;
}
this.url = url;
this.client = new MongoClient(url, {
useNewUrlParser: true
});
}
connect() {
this.client.connect(async (error) => {
if (error) {
throw error;
}
});
}
};
По сути, я хочу подождать, пока connect() не вернется из обратного вызова. Я добавил async перед обратным вызовом, но разве мне не нужен оператор await? Я получаю UnhandledPromiseRejectionWarning от Node.js.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Если подключение является асинхронной функцией/возвращает обещание, вы можете ожидать вызова, если вы вызываете его из асинхронной функции, например:
async connect() {
await this.client.connect(async (error) => {
if (error) {
throw error;
}
});
}
Верно, и в зависимости от того, как написано соединение, ему может вообще не понадобиться обратный вызов ошибки, поскольку он может быть уже отклонен, а затем выброшен ожидаемым оператором.
Возможно, ему больше не нужен
asyncперед(error) => {.