Как пройти через / с Awit Axios? - PullRequest
0 голосов
/ 06 ноября 2019

У меня проблема с циклическим перебором Ides, затем отправка результатов в массив выше, он выдает эту ошибку: «Запрос не выполнен с кодом состояния 404», но если я удалил цикл, он работает правильно

export default class GetPlayersPerMatch {
    constructor(numPlayers) {

        this.numPlayers = numPlayers;
        this.allPlayersMatchesArr = [];

    }
    async getResultsPerMatch() {
        try {
            const proxy = 'http://cors-anywhere.herokuapp.com/'

            for (let i = 0; i < 500; i++) {
                const resPerMatch = await axios(`${proxy}https://fantasy.premierleague.com/api/element-summary/${i}/`)
                this.playerData = resPerMatch.data
                console.log(this.playerData)
                this.allPlayersMatchesArr.push(this.playerData)
            }
            console.log(this.allPlayersMatchesArr) 

        } catch (error) {
            console.log(error)
        }
    }

}

1 Ответ

1 голос
/ 06 ноября 2019
  1. Насколько вы уверены, что есть 500 страниц для просмотра?
  2. Перестройте свой try-catch так, чтобы вы продолжали отправлять запросы, а не возвращаться при любых сбоях
  3. Когда высказать "если я удаляю цикл, он работает", вы имеете в виду, что /api/element-summary/1/ существует, но ваш цикл / запросы могут получить 404 по индексу 15 или 123 или 468 ...

Попробуйте это таки дайте нам знать:

export default class GetPlayersPerMatch {
    constructor(numPlayers) {

        this.numPlayers = numPlayers;
        this.allPlayersMatchesArr = [];

    }
    async getResultsPerMatch() {
        const proxy = 'http://cors-anywhere.herokuapp.com/';

        for (let i = 0; i < 500; i++) {
            try {
                const resPerMatch = await axios(`${proxy}https://fantasy.premierleague.com/api/element-summary/${i}/`);
            } catch (error) {
                console.log(error);
            }
        this.playerData = resPerMatch.data;
        console.log(this.playerData);
        this.allPlayersMatchesArr.push(this.playerData);
        }
        console.log(this.allPlayersMatchesArr);        
    }
}
...