【发布时间】:2015-06-18 20:38:44
【问题描述】:
这是一个接收我正在制作的演员的一部分的示例:
def receive = {
case "begin" =>
val listOfFutures: IndexedSeq[Future[Any]] = workers.map(worker => worker ? Work("test"))
val future: Future[IndexedSeq[Any]] = Future.sequence(listOfFutures)
future onComplete {
case Success(result) => println("Eventual result: "+result)
case Failure(ex) => println("Failure: "+ex.getMessage)
}
case msg => println("A message received: "+msg)
}
当其中一名工作人员的询问失败时(在超时的情况下),序列未来以失败告终。但是我想知道哪些工人失败了。有没有比不使用 Future.sequence 简单地一一映射 listOfFutures 更优雅的方法?
【问题讨论】:
-
除了使用 Futures 之外,您还可以考虑只接收个人回复并处理它们。这个 Actor 也可能非常适合 FSM 特质。
-
还有来自this answer的“Future of Trys”方法。