Вот мой код:
function getUserRatingsSorted(userIds) {
return Promise.all(userIds.map(id => {
return admin.database().ref().child('users').child(id).on('value', (s) => {
const user = s.val();
user.id = id;
return user;
});
}));
}
function prepareGameForStart(userIds) {
getUserRatingsSorted(userIds)
.then((users) => evaluateUsersByRatings(users))
.then((playerAndRatings) => distributePlayersInTeams(playerAndRatings))
.then(notification.sendPushNotificationTo('Teams have been selected', 'Log in to your group to see your team', userIds))
.catch((error) => {
console.log(error);
});
}
Когда я регистрирую пользователей в первых , затем я получаю
[[Функция], [Функция], [Функция], [Функция]]
, и он срабатывает до того, как пользователи извлекаются из базы данных. Поэтому, если я console.log(user)
в функции getUserRatingsSorted
, они будут напечатаны после регистрации пользователей . Для меня это звучит неправильно, так как вещи в обещании должны быть напечатаны, тогда вещи в , а затем . Я считаю, что я делаю что-то не так в создании функции обещания.