Я бьюсь головой об этой проблеме, и мне нужна помощь с решением. У меня есть массив идентификаторов в JSON, и я перебираю этот массив и делаю GET-запрос для каждого идентификатора. Затем я хочу поместить ответ этих запросов GET в массив.
Вот функция, которую я использую для проталкивания регистраций в массив. Итерация по массиву идентификаторов:
getRegistrations = async (event) => {
let registrations = [];
await event.registrations.forEach(registration => axios.get('/event/getRegistration', {
params: {
id: registration
}
}).then(res => {
registrations.push(res.data.properties)
}
).catch(err => console.log(err)));
return registrations;
};
Здесь я звоню по этому коду:
render() {
let event = this.getEvent();
let registrations2 = [{
age: 19,
bio: 'test',
firstName: 'hello',
lastName: 'bye',
password: 'adadas',
telephone: "4920210213"
}];
if (this.props.listOfEvents.events.length !== 0 && !this.props.listOfEvents.gettingList && event) { //check if the array is empty and list has not been rendered yet
let columns = [];
let registrations = this.getRegistrations(event);
console.log(registrations);
let eventProperties = event.properties[0];
Object.keys(eventProperties).forEach(key => columns.push({
title: eventProperties[key].title,
dataIndex: key,
key: key
}));
console.log(registrations);
console.log(registrations2);
return (
<h1>hi</h1>
)
}
return <Loading/>
}
Когда я консоль регистрирую 'регистрации' против 'регистрации2', они должны быть очень идентичны. Однако в консоли javascript в Google Chrome «регистрации» отображаются как «[]», а «регистрации 2» - как «[{...}]».
Я знаю, что это проблема, связанная с обещаниями (я возвращаю массив регистраций до фактического нажатия), но я не знаю, как это исправить! Дружеская помощь будет очень признательна!