【发布时间】:2016-03-07 20:00:09
【问题描述】:
我试图理解以下答案How to carry on executing Future sequence despite failure?。 (希望这不是值得一票的,因为我正在尝试理解这里的代码。)
我不明白 mapValue 如何将 Future[T] 转换为 Future[Try[T]]
def mapValue[T]( f: Future[T] ): Future[Try[T]] = {
val prom = Promise[Try[T]]()
f onComplete prom.success
prom.future
}
f onComplete prom.success 行,它在做什么。我的理解是 prom.success 必须采用 Try[T] 类型的对象,但在这里它不这样做。也没有对 f 的赋值,它将 Future[T] 转换为 Future[Try[T]]。 此外,anThen on Future 应该是一个副作用,并且应该返回与它相同的未来值,因此不确定转换是如何发生的。
【问题讨论】:
-
为什么将
Try包装在那里,因为Future处理错误 -
看原题链接了解上下文
-
你能举个例子吗?即 -
mapValue ( example )然后是预期的输出? -
@KevinMeredith 查看问题中发布的链接。这里stackoverflow.com/questions/15775824/…