Ограничение числа запросов в секунду

У API сервиса стоит ограничение на 5 запросов в секунду, собственно вопрос как можно ограничить число запросов?

У меня есть json с 30 id, для каждого id нужно сделать запрос на API сервиса.

Перебираю json с помощью for...in
Для запроса использую fetch.


Ответы (1 шт):

Автор решения: Alexander Chernykh

Вар 1. Раз 5 запросов на секунду, то ты в секунду не можешь отсылать более 5 ID, а это значит что придётся делать после каждых 5-ти отправок ты должен выжидать нужный тайминг для сервера

Вар 2. Либо ты можешь отлавливать реджект от сервера - если после запроса тебя реджектнуло, то просто ждать одну секунду и пробовать снова.

Вар 3. Поищи в доках, можно ли делать запрос состоящий из массива ID

Вар 1

// Это решение не сильно универсальное, всё равно сервер может дать 
// reject, даже выждав тайминг
ids.forEach(function (id, index) {
    if (index+1 % 5 === 0) {
       // ждём секунду
    }
    fetch(...);
});

Вар 2

// Это описано образно! На самом деле такое решение намного сложнее
ids.forEach(function (id, index) {
    fetch(...).then(
       ...
    ).catch(
       // ждём 1 секунду
    );
});
→ Ссылка