Я получаю данные по 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";
}