Почему вместо значения получаю [Promise] из функции
getUserGroups возвращает сгруппированных людей, getNumberByUserId возвращает некий secretNumber по id, на выходе нужно получить функцию getUsers, возвращающую массив юзеров такого вида:
[ { id: 3, name: 'Alex', secretNumber: 9 } ]
const getUserGroups = () => {
const userGroups = [
{
id: 1,
name: 'Друзья',
users: [
{ id: 1, name: 'Anna' },
{ id: 3, name: 'Bob' },
{ id: 4, name: 'V' },
],
},
{
id: 2,
name: 'Коллеги',
users: [
{ id: 7, name: 'Alex' },
{ id: 10, name: 'Max' },
{ id: 11, name: 'X' },
{ id: 14, name: 'Steve' },
{ id: 77, name: 'Lisa' },
{ id: 78, name: 'Mike' },
{ id: 81, name: 'Sam' },
{ id: 89, name: 'John' },
],
},
];
return new Promise((resolve) => {
setTimeout(() => resolve(userGroups), 300);
});
};
const getNumberByUserId = (id) => {
return new Promise((resolve) => {
setTimeout(() => resolve(id ** 2), 3000);
});
};
const getUsers = async (group) => {
const promises = group.users.map(async (el) => {
const secretNumber = getNumberByUserId(el.id);
return { id: el.id, name: el.name, secretNumber };
});
return (await Promise.all(promises)).filter((el) => el.secretNumber % 2 != 0);
}
(async () => {
const groups = await getUserGroups();
const results = await Promise.all(groups.map((group) => getUsers(group)))
console.log(results)
})();
У меня приходит массив вида:
[ { id: 7, name: 'Alex', secretNumber: [Promise] } ]
Источник: Stack Overflow на русском