aagzip
@aagzip

Promise.allSettled зависает при большом количетсве промисов, что делать?

Добрый день.

Есть определенный код который получает данные через API стороннего сервиса. Но после нескольких выполнений, случаются зависания при получении данных, соответственно отваливается по таймауту.

Если руками пройти по ссылке на которой зависло, то все отрабатывает должным образом.
Также на малом количестве запросов отрабатывает должным образом, но как количество переходит примерно за 300-400, то порой начинаются подвисания.

Как избавиться от подвисаний и получить полные данные?

let result = await Promise.allSettled(promises);
  return result
    .filter((p) => {
      console.log(p);
      return p.status === 'fulfilled' && p.value.stringencyData !== undefined;
    })
    .map((e) => {
      const { stringencyData } = e.value;
      return {
        dateValue: stringencyData.date_value,
        countryCode: stringencyData.country_code,
        stringencyActual: stringencyData.stringency_actual,
        ...stringencyData,
      };
    });


Переменная promises заполняется вот так:
async function getData(alpha, date) {
  let res, json;
  try {
    res = await fetch(`https://covidtrackerapi.bsg.ox.ac.uk/api/v2/stringency/actions/${alpha}/${date}`, {
      timeout: 200000,
    });
  } catch (err) {
    console.log(err);
  }

  try {
    json = await res.json();
  } catch (err) {
    console.log(err);
  }

  return json;
}
  • Вопрос задан
  • 131 просмотр
Решения вопроса 1
hahenty
@hahenty
('•')
пусть будет
это же ограничение запросов со стороны сервера (анти ддос).
https://qna.habr.com/q/1105356 вот способ.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы