2016-04-29 57 views
1

我将scala.concurrent.ExecutionContext.Implicits.global用于Future的所有执行者。但有时候,我做了一件简单的事情,只是希望它不会改变线程(不把它放到线程池中),让它在当前线程下继续运行。使用twitter Future其中有一个Future.value来实现此目的。如何在Scala的未来做什么?如何让scala的Future在当前线程上运行?

+0

如果你做简单的事情你不都需要一个未来。 –

+0

@EndeNeu,简单的事情只是作品的一个分支。我必须建立一个未来,以确保最终的结果是'未来'。 – LoranceChen

+0

您可以执行'Future.successful'或'Future.failed'来获取已完成的Future。 – Thilo

回答

2

你可以这样做:

Future.fromTry(Try { ... }) 

它不需要ExecutionContext,基本上只是立即评估表达和包装导致的未来。

其实,这里是它的实现:

def fromTry[T](result: Try[T]): Future[T] = Promise.fromTry(result).future 

因此,这似乎是Twitter的Future.value的直接模拟。

如果您想创建已失败的未来,请考虑使用Future.successful如果您的代码没有出现任何异常或Future.failed

1

scala标准库中twitter等的Future.value等于Future.successful

Future.constFuture.fromTry

Future.exceptionFuture.failed

相关问题