0

Я получаю данные по GitHub API на странице index,html, после чего записываю их в LocalStorage и хочу использовать на странице user.html

Но дело в том, что данные по ключу contributorsArr заносятся позже, чем по ключу RepoData, из за чего в случае перехода по ссылке на странице user.html я имею только данные по ключу RepoData

Как я могу совершить переход на user.html, чтобы не потерять никаких данных? То есть дождавшись всех записей в LocalStorage

const API = class {
    constructor() {
        this.URL = 'https://api.github.com';
        this.USER_PER_PAGE = 10;
    }
    getData = async (url) => {
        const res = await fetch(url);
        if (res.ok) {
            return res.json();
        } else {
            throw new Error(`Not enought data from : ${url}`);
        }
    }
    getRepoResult = (repoPath) => {
        return this.getData(`${this.URL}/repos/${repoPath}`);
    }
    getContributorsResult = (repoPath) => {
        return this.getData(`${this.URL}/repos/${repoPath}/contributors`);
    }
}

Здесь я жму на ссылку с названием репозитория и получаю данные

repositoriesList.addEventListener('click', (event) => {
    if (event.target.closest('.repositories-list__link')) {
        let fullRepoName = event.target.textContent;
        new API().getRepoResult(fullRepoName).then(createRepoCard);
    }
})

Здесь после клика я получаю все данные и заношу в localStorage

function getContributors(response) {
    let contributors = [];
    response.forEach((item) => {
        contributors.push(item.login);
    })
    console.log(contributors);
    localStorage.setItem('contributorsArr', JSON.stringify(contributors));
}

function createRepoCard(response) { new API().getContributorsResult(response['full_name']).then(getContributors); let repoData = { fullName: response['full_name'], avatarURL: response.owner['avatar_url'], owner: response.owner.login, stars: response['stargazers_count'], language: response['language'], description: response['description'] } localStorage.setItem('repoInfo', JSON.stringify(repoData)); // Тот самый переход по ссылке, который не дожидается записи в contributorsArr document.location.href = "/user.html"; }

Pashok
  • 1,147
  • 3
  • 16
  • 29
Immersion
  • 447

0 Answers0