我将scala.concurrent.ExecutionContext.Implicits.global
用于Future的所有执行者。但是有时候,我做了一些简单的事情,只是想让它不改变线程(不把它放到线程池中),让它继续在当前线程下运行。使用有Future
的twitter Future.value
来实现这一目标。在scala的未来怎么做?
答案 0 :(得分:3)
你可以这样做:
Future.fromTry(Try { ... })
它不需要ExecutionContext
,基本上只是立即评估表达式并在将来包装结果。
实际上,这是它的实施:
def fromTry[T](result: Try[T]): Future[T] = Promise.fromTry(result).future
所以这似乎与Twitter的Future.value
直接相似。
如果您的代码没有引发任何异常,请考虑使用Future.successful
;如果您想创建已经失败的未来,请考虑使用Future.failed
。
答案 1 :(得分:1)
scala标准库中twitter的Future.value
的等效值为Future.successful
。
Future.const
是Future.fromTry
Future.exception
是Future.failed