【问题标题】:How to Limit Concurrency in fp-ts如何在 fp-ts 中限制并发
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2022-01-07
    • 2021-12-04
    • 1970-01-01
    • 2022-08-14
    • 2021-08-25
    • 2022-07-19
    • 1970-01-01
    • 1970-01-01
    • 2022-09-25
    相关资源
    最近更新 更多