谁能告诉我参数在tryComplete
函数中引用了什么?
def any[T](fs: List[Future[T]]): Future[T] = { val p = Promise[T]() fs foreach (x => x.onComplete(p.tryComplete(_))) p.future }
我知道这里的下划线是类型的Try[T]
.这Try[T]
是从哪里来的?
让我们从头开始.既然fs
是List[Future[T]]
,你就知道x
了Future[T]
.
您需要注册一个在结果x
可用时将触发的回调.执行此操作的简单方法是使用onComplete
类型函数Try[T] => U
.
因此,下划线是Try[T]
,其持有的结果x
,对Future[T]
.对于a ,有两种可能的结果Future
:Success[T]
当Future[T]
工作并保持结果时,Failure[T]
由于Future[T]
不起作用而保持异常.
所以Try
类似于Option
,一种安全地表示结果的方法.
希望有所帮助.