Почему оператор спреда пропускает данные?
Я работаю с Github API, используя библиотеку Octokit.
У меня есть функция, которая отображает весь репозиторий пользователя (имя пользователя). Я вызвал эту функцию нажатием кнопки под названиемFetch
Для простоты я визуализирую только 1-й репозиторий (с индексом 0).
const list = []
function fetchRepos() {
octokit.repos
.listForUser({
username: 'abhinav-anshul',
})
.then((details) => list.push(details.data[0].name))
console.log('List Array', list)
const list2 = [...list]
console.log(list2)
}
Как видно из кода, я обрабатываю цепочку обещаний, и в этой цепочке обещаний я помещаю результат репо в пустой массив с именем list.
в console.log('List Array', list)
, Я могу правильно получить имя 0-го репо, как показано на изображении ниже:
Но когда я пытаюсь использовать spread operator
передать массив списка в новый массив с именем list2
и сделать console.log(list2)
Получаю следующее:
Почему я потерял здесь название репо? Я делаю что-то концептуально неправильно? Любая помощь очень ценится.
Спасибо
1 ответ
Твой then()
асинхронный, поэтому он запускается после вашего console.log(list2)
. Вот почему вашlist2
по-прежнему пустой массив.
Предлагаю сделать вашу функцию async
:
const list = [];
async function fetchRepos() {
const details = await octokit.repos
.listForUser({
username: 'abhinav-anshul',
});
list.push(details.data[0].name);
console.log('List Array', list);
}