如何限制fp-ts中的并发性

时间:2019-05-09 15:52:37

标签: concurrency functional-programming fp-ts

我们的团队开始学习fp-ts,并且我们从一些基本的异步示例开始(大多来自here)。依次运行一组任务非常好,看起来像array.sequence(task)(tasks) 问题是,在fp-ts中执行并行任务时,限制并发的惯用方式是什么?例如,Promise.map(在bluebird中)允许您设置{concurrency: 4}之类的并发限制。

一种解决方案可能是将数组拆分为多个块,然后使用sequence和flatMap迭代这些块。但是,这意味着每个块中的每个任务都必须先完成,然后再进入下一个块-一个长时间运行的任务可能会阻止整个操作。

必须缺少一些抽象概念-我们都是FP新手,所以希望这里有更多exp的人可以帮忙。

1 个答案:

答案 0 :(得分:0)

我在ts-fp git repo上找到了乐于助人的解决方案。看来包裹p-map是必经之路

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