鏈接scala.util.Try和scala.concurrent.Future是否可能?它們都有效地提供相同的monadic接口,但試圖鏈接它們會導致編譯錯誤。斯卡拉 - 鏈接期貨嘗試塊?
例如。鑑於下面的兩個簽名
def someFuture:Future[String] = ???
def processResult(value:String):Try[String] = ???
是否有可能做類似以下的事情?
val result = for(a <- someFuture; b <- processResult(a)) yield b;
result.map { /* Success Block */ } recover { /* Failure Block */ }
這顯然會導致編譯錯誤,因爲未來和嘗試不能flatmapp'ed在一起。
然而,這將是一個很好的功能,能夠鏈接它們 - 這是可能的嗎?或者我需要將它們組合成未來[嘗試[字符串]]?
(特別是,我有興趣在未來的或嘗試有一個'恢復'塊來捕獲異常。
當前存在[討論在scala用戶](https://groups.google.com/d/topic/scala-user/Mu4_lZAWxz0 /討論)關於將'Try'轉換爲'Future'的確切問題。也許像這樣的幫手應該包含在標準庫中。 – gourlaysama
Future.fromTry? –
@ViktorKlang,是的,你是對的。我更新了我的答案以包含該方法。感謝您的高舉。 – cmbaxter