Как сделать сотни запросов на получение одновременно с помощью axios - PullRequest
0 голосов
/ 12 апреля 2020

Я создаю приложение React с использованием внешнего API. Но я сталкиваюсь с небольшой проблемой. Мне нужно сделать один запрос GET для каждого идентификатора, который у меня есть. Возможно, мне нужно сделать до 1000 запросов GET, и проблема в том, сколько времени нужно, чтобы получить все данные. Есть ли способ, скажем, 1000 запросов GET, не дожидаясь их разрешения? У меня есть это, но это требуется навсегда.

for(const match of totalMatchesWithPremades){
    try {
        const matchStats: ISats = await axios.request<IMatchStats>({
          url: `https://API/match/${match.match_id}/stats`,
          method: 'get',
          headers: {
            accept: 'application/json',
            Authorization: `Bearer ${API_KEY}`,
          },
        });
        console.log(JSON.stringify(matchStats,null,2))
      } catch (err) {
        console.log(err);
      }
    }

Ответы [ 2 ]

0 голосов
/ 16 апреля 2020

Я обнаружил, что могу использовать Promise.allSettled() вот так


Promise.allSettled(arr.map((match)=>{
const matchStats: ISats = await axios.request<IMatchStats>({
          url: `https://API/match/${match.match_id}/stats`,
          method: 'get',
          headers: {
            accept: 'application/json',
            Authorization: `Bearer ${API_KEY}`,
          },
        });
        console.log(JSON.stringify(matchStats,null,2))
      } catch (err) {
        console.log(err);
      }
})

Это будет выполнять все обещания один за другим и возвращать массив, если они были выполнены или отклонены. Я сделал 400 запросов за 5 секунд и 4 минуты

0 голосов
/ 12 апреля 2020

Вероятно, вам нужно проверить что-то вроде bulk маршрутов для API. Например, вы можете установить массив match_id s, сделать только один запрос и получить массив данных.

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

...