【发布时间】:2019-05-09 15:52:37
【问题描述】:
我们的团队开始学习 fp-ts,我们从一些基本的异步示例开始(大部分来自 here)。依次运行一组Tasks很棒,看起来像array.sequence(task)(tasks)
问题是,在 fp-ts 中执行并行任务时限制并发的惯用方法是什么?例如,Promise.map(在 bluebird 中)允许您设置并发限制,例如 {concurrency: 4}。
一种解决方案可能是将数组拆分为块,然后使用序列和 flatMap 迭代这些块。但是,这意味着每个块中的每个任务都必须在移动到下一个块之前完成 - 一个长时间运行的任务可能会阻止整个操作。
一定有一些我们遗漏的抽象——我们都是 FP 的新手,所以希望这里有更多经验的人可以提供帮助。
【问题讨论】:
-
显然fp-ts库的
Task类型不支持这个。所以你必须自己实现它,可能有一个任务队列。 FP 中没有针对此问题的通用组合子。 -
谢谢,很高兴知道!
标签: concurrency functional-programming fp-ts