Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 并行执行多个任务,从第一个完成的任务中选择答案_Scala_Akka_Scala 2.11 - Fatal编程技术网

Scala 并行执行多个任务,从第一个完成的任务中选择答案

Scala 并行执行多个任务,从第一个完成的任务中选择答案,scala,akka,scala-2.11,Scala,Akka,Scala 2.11,我有n不同的来源,比如说,可以得到美元兑欧元的汇率。设n=3,来源为Google、Yahoo、MyRates以及相应的方法: def getYahooRate:Double = ??? def getGoogleRate:Double = ??? def getMyRate:Double = ??? 我想查询美元兑欧元的汇率,这样所有n来源都会被并行轮询,收到的第一个响应会立即返回。如果在指定的时间范围内没有回复,则引发异常 使用Scala(必要时还有Akka)实现这一点的规范方法是什么 是否

我有
n
不同的来源,比如说,可以得到美元兑欧元的汇率。设
n=3
,来源为Google、Yahoo、MyRates以及相应的方法:

def getYahooRate:Double = ???
def getGoogleRate:Double = ???
def getMyRate:Double = ???
我想查询美元兑欧元的汇率,这样所有
n
来源都会被并行轮询,收到的第一个响应会立即返回。如果在指定的时间范围内没有回复,则引发异常

使用Scala(必要时还有Akka)实现这一点的规范方法是什么

是否有任何库方法可以完成大部分工作

编辑:以下是我尝试过的。请就守则提出一些意见:

这有点像来自的
trycatch
的并行版本。以下方法的代码基于


您可以使用
Future.firstCompletedOf

val first = Future.firstCompletedOf(futures)
Await.result(first, timeOut.millis)

您可以使用
Future.firstCompletedOf

val first = Future.firstCompletedOf(futures)
Await.result(first, timeOut.millis)

经过一段时间的试验,这并没有达到预期的效果。与我粘贴的代码不同,如果第一个失败,它将返回失败,而不是等待成功。如果第一个失败,它将返回失败,而不是等待成功,这与我粘贴的代码不同。