RateLimiter
RateLimiter — класс для контроля частоты запросов к Rest API. Singleton экземпляр доступен через свойство rest.rateLimiter после инициализации Frame.
Автоматически ограничивает количество запросов в секунду, ставит запросы в очередь при превышении лимита и повторяет запросы при получении ошибки HTTP 429.
import { RateLimiter } from '@aspro-cloud/miniapp-jssdk'Свойства
lastRequestTime
Временная метка (мс) последнего отправленного запроса
get lastRequestTime(): numberlimit
Максимальное количество запросов в секунду. Значение заполняется из контекста при первом вызове Rest API методами Rest.get() или Rest.post(). Значение -1 означает, что лимит ещё не получен из контекста
get limit(): numberprocessing
Количество запросов, обрабатываемых в текущий момент
get processing(): numberremaining
Количество оставшихся запросов до достижения лимита. Значение обновляется при получении каждого ответа запроса Rest API
get remaining(): numberreset
Временная метка (мс), после которой лимит сбрасывается. Значение обновляется при получении каждого ответа запроса Rest API
get reset(): numberМетоды
getInstance
Возвращает текущий singleton экземпляр RateLimiter
static getInstance(): RateLimiterdestroy
Удаляет подписки и освобождает ресурсы
destroy(): voidПример
import { App, RateLimiter, Rest } from '@aspro-cloud/miniapp-jssdk'
await App.initializeFrame()
const rest = Rest.getInstance()
const rateLimiter = RateLimiter.getInstance()
// Получение текущего пользователя
const user = await rest.get('/core/user/get/')
// Чтение текущих значений лимитов
console.log({
limit: rateLimiter.limit,
remaining: rateLimiter.remaining,
reset: rateLimiter.reset,
})const App = window.ACloudMiniApp
const frame = await App.initializeFrame()
// Получение текущего пользователя
const user = await frame.rest.get('/core/user/get/');
// Чтение текущих значений лимитов
console.log({
limit: frame.rest.rateLimiter.limit,
remaining: frame.rest.rateLimiter.remaining,
reset: frame.rest.rateLimiter.reset,
});