Как ограничить параллелизм в fp-ts - PullRequest
2 голосов
/ 09 мая 2019

Наша команда начинает изучать fp-ts, и мы начинаем с некоторых простых асинхронных примеров (в основном это здесь ). Выполнение набора задач в последовательности - это здорово, и похоже, что array.sequence(task)(tasks) Вопрос в том, каков идиоматический способ ограничения параллелизма при выполнении параллельных задач в fp-ts? Например, Promise.map (в bluebird) позволяет вам установить ограничение параллелизма, например {concurrency: 4}.

Одним из решений может быть разбиение массива на куски, а затем итерация кусков с использованием sequence и flatMap. Однако это означало бы, что каждая задача в каждом чанке должна быть выполнена перед переходом к следующему чанку - одна длительная задача может задержать всю операцию.

Должна быть какая-то абстракция, которую мы упускаем - мы все довольно плохо знакомы с FP, так что, надеюсь, кто-то здесь с большим опытом может помочь.

1 Ответ

0 голосов
/ 10 мая 2019

Мне удалось найти решение с полезными людьми в репозитории ts-fp git. Похоже, упаковка p-map - это путь, по которому можно пойти

https://github.com/gcanti/fp-ts/issues/574#issuecomment-424658481

...