ЦЕЛЬ: иметь настраиваемые интервалы запросов с использованием промисов и рекурсии.

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

Ограничение скорости — это практика, при которой конечная точка, в данном случае конечная точка API (но может быть любой URL-адрес), имеет ограничение на определенное время, в течение которого вы можете получить доступ. Примером для API может быть: 40 запросов в минуту на ключ API, где веб-сайт может регулировать количество запросов в зависимости от количества IP-адресов.

Теперь, к сути проблемы, JavaScript любит делать что-то асинхронно. Чтобы решить первую проблему, обычно ответ API содержит что-то похожее на атрибут has_next, чтобы вы знали, что данных больше, чем вы запросили, и что вам нужно сделать дополнительные запросы, чтобы собрать все данные. Однако это не проблема, поскольку мы можем использовать рекурсивное решение. Чтобы понять это решение, возможно, потребуется предварительное знание модуля npm request-promise. Кроме того, рассматриваемый API имеет параметр смещения и ограничен 200 элементами ответа.

Теперь это решает проблему, связанную с тем, что ответ ограничен по размеру. Теперь мы сталкиваемся с проблемой Rate-Limit. Чтобы решить эту проблему, мы должны ввести setTimeout, который возвращает обещание. request-promise имеет метод delay, который можно связать, но он не будет работать с рекурсивным решением.

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

ЦЕЛЬ ✅