【发布时间】:2015-10-11 13:30:09
【问题描述】:
我想用
scalaz.concurrent.Task 实现我的异步处理。我需要一个函数(Task[A], Task[B]) => Task[(A, B)] 来返回一个新任务,其工作方式如下:
- 并行运行
Task[A]和Task[B],等待结果; - 如果其中一项任务失败,则取消第二项任务并等待它终止;
- 返回两个任务的结果。
你会如何实现这样的功能?
【问题讨论】:
-
这里cancel 可能意味着几个不同的东西。您只是希望计算快速失败吗?然后
Nondeterminism上的both之类的东西就会起作用。如果您还想避免浪费循环(或者您想撤消仍在运行的计算的影响),它会更加复杂。 -
是的,我现在只想让计算快速失败。
标签: scala concurrency task scalaz