Я немного смущен этим дизайном. Как правильно использовать async / await? Вот основная ситуация, с которой я имею дело:
Я клиентское приложение, использующее REST API. У меня есть такая функция:
//Class method to get user list.
async getUsers(url) {
let options = {
method: 'GET',
uri: url,
json: true,
headers: {
Authorization: this.authString
}
}
//Using request-promise module.
let users = await request(options)
return users
}
Этот метод получает список пользователей, а затем, поскольку метод является асинхронным, он возвращает список в обещании. По сути, я получаю разрешенное значение из обещания с помощью await, но затем оно оборачивается другим обещанием, когда я вызываю getUsers (). Я хочу иметь возможность возвращать список пользователей, а не обещание, но если я удалю ключевое слово async, я не смогу вызвать ожидание. Как лучше всего решить эту проблему?
Название этого вопроса - верное утверждение.
getUsers, также должен обрабатывать асинхронный характер того, что вы делаете (и его вызывающий объект, и т. д., Прямо на пути вверх по цепочке).
Так что в этом случае нет смысла использовать ожидание. Можно просто вернуть исходное обещание, верно? Или, я полагаю, я мог бы использовать обратный вызов (который побеждает цель ожидания).
Да, в этом случае можно вернуть исходное обещание: return request(options);.



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


Вот для чего нужно ключевое слово
async. Он объявляет, что функция возвращает обещание и позволяет использовать внутри негоawait.