2016-04-29 52 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

相關問題