Как я могу ограничить параллелизм Q обещания?

Как мне написать метод, который ограничивает параллелизм Q обещания?

Например, у меня есть методspawnProcess, Возвращает обещание Q

Я хочу, чтобы одновременно вызывалось не более 5 процессов, но прозрачно для вызывающего кода.

Мне нужно реализовать функцию с подписью

function limitConcurrency(promiseFactory, limit)

что я могу назвать как

spawnProcess = limitConcurrency(spawnProcess, 5);

// use spawnProcess as usual

Я уже начал работать над своей версией, но мне интересно, есть ли у кого-то лаконичная реализация, с которой я могу проверить.

Ответы на вопрос(4)

Ваш ответ на вопрос