【发布时间】:2019-08-18 18:46:24
【问题描述】:
我一直在努力解决这个问题,需要帮助来解决这个问题。我在 JSON 中有一个 ID 数组,我正在遍历该数组并对每个 ID 发出 GET 请求。然后我想将这些 GET 请求的响应推送到一个数组中。
这是我用来将注册推送到数组中的函数。它正在遍历一个 ID 数组:
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/>
}
当我控制台记录“registrations”与“registrations2”时,它们应该非常相同。但是,在 Google Chrome 上的 javascript 控制台中,“registrations”显示为“[]”,而“registrations2”显示为“[{...}]”。
我知道这是一个与承诺有关的问题(我在实际推送之前返回了注册数组)但我不知道如何解决它!非常感谢一些友好的帮助!
【问题讨论】:
-
看到
getRegistrations()是异步的,您需要在调用它时考虑到这一点。考虑一下:this.getRegistrations(event).then((registrations) => { console.log('got data', registrations); })
标签: javascript reactjs axios