/
laborgit
/
laborgit-frontend
Обзор
Документация
Войти
/
laborgit
/
laborgit-frontend
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
main
src/services/utils/requestQueue.ts
29 строк
675 B
gdev2018
TSKLBRGTFRNT-41 tableReady
21 июн 2026, 17:53
21 июн 2026, 17:53
4dfc11f
Код
Авторство
О чём код?
class RequestQueue { private queue: Array<() => void> = []; private activeCount = 0; private maxConcurrent: number; constructor(maxConcurrent: number = 6) { this.maxConcurrent = maxConcurrent; } async enqueue<T>(fn: () => Promise<T>): Promise<T> { if (this.activeCount >= this.maxConcurrent) { await new Promise<void>((resolve) => { this.queue.push(resolve); }); } this.activeCount++; try { return await fn(); } finally { this.activeCount--; if (this.queue.length > 0) { const next = this.queue.shift(); next?.(); } } } } export const requestQueue = new RequestQueue();