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