如何在 fp-ts 中限制并发

How to Limit Concurrency in fp-ts

我们的团队开始学习 fp-ts,我们从一些基本的异步示例开始(主要来自 here)。 运行 一组按顺序排列的任务很棒,看起来像 array.sequence(task)(tasks) 问题是,在 fp-ts 中执行并行任务时,限制并发的惯用方法是什么?例如,Promise.map(在 bluebird 中)允许您设置像 {concurrency: 4} 这样的并发限制。

一个解决方案可能是将数组拆分为块,然后使用序列和 flatMap 迭代块。但是,这意味着每个块中的每个任务都必须在移动到下一个块之前完成 - 一个长 运行 任务可能会阻止整个操作。

一定有一些我们缺少的抽象 - 我们都是 FP 的新手,所以希望这里有更多经验的人可以帮忙。

我能够在 ts-fp git 存储库中与乐于助人的人一起找到解决方案。看起来包装 p-map 是要走的路

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