Я просмотрел следующие статьи, в которых все go подробно об асинхронных вызовах возвращают значение undefined.
Почему моя переменная не изменяется после того, как я изменяю ее внутри функции? - Ссылка на асинхронный код
Получить данные из fs.readFile
Однако это не отвечает на мой вопрос. В моем примере я использую async
, await
и .then
. Функция asyn c возвращает что-то и заполняет массив, однако это формат массива и способность работать с массивом, с которым я борюсь.
Я использую следующий код для заполнения массива объектами из моей базы данных MongoDB.
const initialClasses = [];
const getInitData = async () => {
await axios.get('http://localhost:5000/classes/api/')
.then(response => {
initialClasses.push(response.data)
})
.catch(error => {
console.log(error)
});
}
getInitData();
console.log(initialClasses);
Однако, когда я использую console.log initialClasses, я получаю следующий массив:
[]
0: (3) [{…}, {…}, {…}] // objects provided from the async call
length: 1
__proto__: Array(0)
Когда я пытаюсь получить доступ к этому array, используя console.log(initialClasses[0]);
, я получаю undefined.
Что я сделал не так при создании этого массива? Есть ли лучший, более чистый способ сделать это, который я упустил? Спасибо.