Назад к задачам
Junior — Senior
3

Параллельный запуск запросов с ограничением количества

Компании, где спрашивали:

HR SIGNAL
Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

Создайте функцию, которая для каждого элемента входного массива вызывает переданный callback и собирает результаты в массив ответов Response[].

Выполнение запросов должно происходить одновременно, однако количество одновременно запущенных запросов ограничено параметром limit. Такая схема позволяет уменьшить общее время работы программы, не перегружая ресурсы.

type Props<RequestData, Response> = {
    callback: (args: RequestData) => Promise<Response>;
    data: Array<RequestData>;
    limit: number;
};

/*                    Решение задачи                */
export async function runWithLimit<RequestData, Response>({
    callback,
    data,
    limit,
}: Props<RequestData, Response>): Promise<Response[]> {
    /*    START SOLUTION HERE  */
    const result: Response[] = [];

    return Promise.all([]);
}