synapse-storage
Version:
Набор инструментов для управления состоянием и апи-запросами
22 lines (13 loc) • 916 B
JavaScript
import { forkJoin, timer } from "rxjs";
import { mergeMap } from "rxjs/operators";
import { chunk } from "../../../_utils/index.js";
/**
* Разбиение запроса на порции
* Отправляется ПАРАЛЛЕЛЬНО n-запросов и дожидается ответа от каждого
* @param fn - функция в которую передается chunk и возвращается функция api
* @param arr - массив который нужно поделить
* @param size - размер порции
* @param delayMs - задержка между запросами в миллисекундах
*/ const chunkRequestParallel = (fn, arr, size, delayMs = 0)=>forkJoin(chunk(arr, size).map((chunkItem, index)=>timer(index * delayMs).pipe(mergeMap(()=>fn(chunkItem)))));
export { chunkRequestParallel };
//# sourceMappingURL=chunkRequestParallel.js.map