我们的团队开始学习 fp-ts,我们从一些基本的异步示例开始(大部分来自这里)。依次运行一组Task就很棒了,看起来array.sequence(task)(tasks)
问题来了,在fp-ts中执行并行Task时,限制并发的惯用方式是什么?例如,Promise.map(在 bluebird 中)允许您设置并发限制,例如{concurrency: 4}
.
一种解决方案可能是将数组拆分为块,然后使用序列和 flatMap 迭代这些块。但是,这意味着每个块中的每个任务都必须在移动到下一个块之前完成 - 一个长时间运行的任务可能会阻止整个操作。
一定有一些我们缺少的抽象——我们都是 FP 的新手,所以希望这里有更多经验的人可以提供帮助。