I'm having an issue with this code:
let tmpContributors = [...this.state.contributors]; for (let i = 0; i < 10; i++) {//10 most active contributors because of performance and github limits contributorPropertiesPromises.push(axios.get(`${this.state.contributors[i].followers_url}?per_page=100&${API_KEY}`) .then(res => { if(res.data.length > 100) { tmpContributors[i].contributorFollowers = res.data.length; } else { for(let page = 1; page <= 5; page++) {//5 pages because of github limitation - can be done by recursion checking if res.headers.link.includes('rel="next"') axios.get(`${this.state.contributors[i].followers_url}?page=${page}&per_page=100&${API_KEY}`) tmpContributors[i].contributorFollowers += res.data.length; } } })) } for (let i = 0; i < 10; i++) {//10 most active contributors because of performance and github limits contributorPropertiesPromises.push(axios.get(`${this.state.contributors[i].repos_url}?per_page=100&${API_KEY}`) .then(res => { if(res.data.length > 100) { tmpContributors[i].contributorRepositories = res.data.length; } else { for(let page = 1; page <= 5; page++) {//5 pages because of github limitation - can be done by recursion checking if res.headers.link.includes('rel="next"') axios.get(`${this.state.contributors[i].repos_url}?page=${page}&per_page=100&${API_KEY}`) tmpContributors[i].contributorRepositories += res.data.length; } } })) } for (let i = 0; i < 10; i++) {//10 most active contributors because of performance and github limits contributorPropertiesPromises.push(axios.get(`${this.state.contributors[i].gists_url}?per_page=100&${API_KEY}`) .then(res => { if(res.data.length > 100) { tmpContributors[i].contributorGists = res.data.length; } else { for(let page = 1; page <= 5; page++) {//5 pages because of github limitation - can be done by recursion checking if res.headers.link.includes('rel="next"') axios.get(`${this.state.contributors[i].gists_url}?page=${page}&per_page=100&${API_KEY}`) tmpContributors[i].contributorGists += res.data.length; } } })) } It works but it's not very DRY. I've tried calling a function with two parameters (e.g. propertyUrl, contributorProperty) and with strings as parameters. Doesn't work for me. Can you guys help me with that one?