这是我的代码:
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);
});
}
当我在第一个然后中登录 用户 时,我会得到
[[Function],[Function],[Function],[Function]]
,它会在从Firebase检索用户之前被触发。因此,如果我在console.log(user)
函数中getUserRatingsSorted
,则在记录 用户 后,它们会被打印出来。对我来说,这听起来不对,因为应先打印诺言中的内容,然后再打印然后中的内容。我相信我在创建promise函数时做错了事。