[英]For comprehension Dynamic List of Futures : Scala
我試圖用於理解以執行一系列的期貨清單。 一個未來的輸出成為下一未來的輸入。 下面是示例代碼。
for {
x <- plugins(0).execute(input)
y <- plugins(1).execute(x)
z <- plugins(2).excute(y)
} yield z
上面的代碼更像瀑布,每個插件(i)在某些輸入上執行,然后將輸出傳遞給下一個插件。 最后一個插件的輸出是最終輸出。 plugins是一個Seq of Plugin對象。 execute方法返回Future。 我想使上面的代碼更通用,其中Plugins中插件的數量是動態的。 我該如何實施它。
plugins.foldLeft(Future.successful(input)) { (resultFuture, plugin) =>
resultFuture.flatMap(plugin.execute(_))
}
查看這些鏈接,看看是否了解這些功能的作用
Future.successful
只是將輸入包裝到Future中,以便我們可以像處理所有其他中間結果一樣對待它。 下划線是lambda函數參數的快捷方式。 編寫該片段的另一種方法是: resultFuture.flatMap { result => plugin.execute(result) }
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.