我们的团队开始学习fp-ts,并且我们从一些基本的异步示例开始(大多来自here)。依次运行一组任务非常好,看起来像array.sequence(task)(tasks)
问题是,在fp-ts中执行并行任务时,限制并发的惯用方式是什么?例如,Promise.map(在bluebird中)允许您设置{concurrency: 4}
之类的并发限制。
一种解决方案可能是将数组拆分为多个块,然后使用sequence和flatMap迭代这些块。但是,这意味着每个块中的每个任务都必须先完成,然后再进入下一个块-一个长时间运行的任务可能会阻止整个操作。
必须缺少一些抽象概念-我们都是FP新手,所以希望这里有更多exp的人可以帮忙。
答案 0 :(得分:0)
我在ts-fp git repo上找到了乐于助人的解决方案。看来包裹p-map是必经之路
https://github.com/gcanti/fp-ts/issues/574#issuecomment-424658481