/
spirzen
/
it-knowledge-base
Обзор
Документация
Войти
/
spirzen
/
it-knowledge-base
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/components/shared/embedLoadQueue.js
31 строка
787 B
Spirzen
New architecture
09 июн 2026, 01:54
09 июн 2026, 01:54
2b4da8b
Код
Авторство
О чём код?
/** Одновременно не больше N тяжёлых iframe — снижает INP и блокировку main thread. */ const MAX_CONCURRENT = 2; let active = 0; const waiters = []; function drainQueue() { while (active < MAX_CONCURRENT && waiters.length > 0) { const {resolve} = waiters.shift(); active += 1; resolve(releaseEmbedLoadSlot); } } function releaseEmbedLoadSlot() { active = Math.max(0, active - 1); drainQueue(); } /** * @returns {Promise<() => void>} release — вызвать после onLoad/onError iframe */ export function acquireEmbedLoadSlot() { if (active < MAX_CONCURRENT) { active += 1; return Promise.resolve(releaseEmbedLoadSlot); } return new Promise((resolve) => { waiters.push({resolve}); }); }