2016-04-29 5 views
1

私はFutureのエグゼキュータのすべてにscala.concurrent.ExecutionContext.Implicits.globalを使用しています。しかし、いつか、私は単純なことをして、スレッド(スレッドプールに入れない)を変更しないようにして、現在のスレッドの下で実行し続けるようにしてください。 twitter Futureは、これを達成するためにFuture.valueを使用してください。スカラーの未来のやり方は?スケーラの未来を現在のスレッドで実行させる方法は?

+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

スカラー標準ライブラリのtwitterのFuture.valueに相当するのはFuture.successfulです。

Future.constFuture.fromTry

Future.exceptionであるあなたがすべてで将来を必要としない簡単なことを行う場合Future.failed

関連する問題