需要测试一些可能导致超时的方法,我想为此创建一个辅助函数。它应返回永远完成的Future
:
def neverCompletes[T]: Future[T] = { ... }
但我想知道,我怎么能这样做?我可以这样:
def neverCompletes[T]: Future[T] = {
val p = Promise[T]()
future {
while(true) { }
} onComplete {
case x =>
p complete x // needed?
println("something went wrong!!!") // something is wrong...
}
p.future
}
但应该有更好的方法来实现这一目标。我也不确定那里是否需要p complete x // needed?
。
答案 0 :(得分:24)
<强>更新强>
在Scala 2.12中,将有一个方法Future.never
,它返回一个永不完成的未来。
简单的事情。只需创建一个Promise
并返回其Future
,而不必填写它:
def neverCompletes[T]: Future[T] = Promise[T].future