В настоящее время я изучаю, как работает асинхронность, работая над небольшим проектом с использованием баз данных Firebase. Насколько я понимаю, ожидание должно приостановить функцию, пока обещание не будет выполнено, но в моем случае это не ждет этого.
Я сократил 2 функции, которые я использовал, чтобы попытаться проверить это:
async findUser(id) {
await this.firebase.findUserData(id).then(
value => {
console.log('finduser stopped waiting');
return value;
}
)
}
async findUserData(userId){
console.log('firebase started looking for user');
firebase.database().ref('/users/' + userId).once('value').then(function(snapshot){
let user = (snapshot.val());
console.log('found: ' + user);
return user;
});
}
Вывод на консоль выглядит следующим образом: (пока не разрешено вставлять изображения)
Сначала запускается findUser, затем следует вызов Firebase, но он не ждет завершения этого обещания, прежде чем вернуть значение. Найденные распечатки идентификатора пользователя были последними.
Я уверен, что я делаю что-то действительно глупое здесь, но я не мог понять это какое-то время и больше некому обратиться к.
Извините, если вопрос плохо написан. Первый раз выкладываю здесь. Приветствую любые отзывы!