Я прохожу через массив команд, получая данные команды и игроков для каждой команды ...
У меня есть 2 асинхронные c функции, которые извлекают одни и те же данные, но я не могу понять, как объедините их.
Как это работает в настоящее время, каждый l oop добавляет массив teamPlayers к массиву player в первой функции asyn c. По завершении в моем массиве игроков будет 1450 объектов игроков. Вторая функция asyn c добавляет объект team в массив команд. По завершении у меня есть 32 объекта команды в моем массиве команд.
Я попытался изменить первую функцию asyn c, чтобы получить данные, а затем отправить диспетчеру значение results.teamPlayers, но в итоге я получил массив игроков с 32 массивами каждый с количеством объектов игроков x.
async function loadRosters(endPoints, teams, authKey) {
axios.defaults.headers.common['Authorization'] = authKey;
const requests = teams.map(teamId => {
try {
return axios.get(endPoints.roster + teamId).then(r => r.data.teamPlayers);
} catch (e) {
console.log(e);
}
return [];
});
const results = (await Promise.all(requests)).flat();
dispatch({ type: 'SET_PLAYERS', value: results });
return results;
}
async function loadTeamData(endPoints, teams, authKey) {
axios.defaults.headers.common['Authorization'] = authKey;
const requests = teams.map(teamId => {
try {
return axios.get(endPoints.roster + teamId).then(r => r.data.team);
} catch (e) {
//
}
return [];
});
const results = (await Promise.all(requests)).flat();
dispatch({ type: 'SET_TEAM_LOGOS', value: results });
return results;
}
Вот структура получаемых данных:
{
"team": {
"teamId": "string",
"abbr": "string",
"logo": "string"
},
"teamPlayers": [
{
"firstName": "string",
"lastName": "string",
"esbId": "string",
"position": "string",
"jerseyNumber": 0,
"teamAbbr": "string",
"headshot": "string"
}
]
}
Это может быть проще, если я получите team.lo go и добавьте его каждому игроку в teamPlayers.