Как сделать 100 вызовов в одной и той же функции, чтобы перебрать конечные точки API? [Pokeapi] - PullRequest
0 голосов
/ 18 января 2020

Мне нужно перебрать 151 покемона, но конечная точка API выглядит следующим образом https://pokeapi.co/api/v2/pokemon/1, где 1 - первый покемон, и мне нужно перебрать до 151, каждый раз вызывая другую конечную точку. Есть лучший способ сделать это? Это код, который у меня есть, и он не работает.

let pokeObj = {};

function pokeList() {
const url ='https://pokeapi.co/api/v2/pokemon/'
const xhr = new XMLHttpRequest();
xhr.onload = function() {
    if (xhr.status === 200) {
        for(let i = 1; i < 100; i++) {
            pokeObj += JSON.parse(xhr.responseText);
            xhr.open('GET', `${url + i.toString()}`, true);
            xhr.send();
        }
    }
}

}

1 Ответ

1 голос
/ 18 января 2020

Попробуйте что-то вроде этого:

(async () => {

    let pokeObj = {};

    const url ='https://pokeapi.co/api/v2/pokemon'
    const xhr = new XMLHttpRequest();

    for(let i = 1; i < 100; i++) {

         const response = await new Promise(resolve => {

            xhr.onload = function(e) {
                resolve(e.target.response);
            }

            xhr.open('GET', `${url}/${i}`, true);
            xhr.send();

        });

        console.log(response)

    }

})();

Каждый запрос будет ожидаться перед запуском следующего, чтобы он подходил серверу API и не выполнял слишком много запросов параллельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...