1
鑑於返回Future
以下方法...斯卡拉:如何處理序列在未來的理解
def getProducts: Future[List[Product]] = { ... }
def sendOrder(p: Product, n: Int): Future[Order] = { ... }
...我需要調用sendOrder
由getProducts
,並在返回的每個產品結束yield
加工產品數量:
for {
products <- getProducts
// how do I iterate thru products and invoke sendOrder for each element?
...
} yield products.length
如何應對產品清單中的上述理解?
編輯
事情變得更復雜,因爲我需要sendOrder
之前調用第三種方法當且僅當getProducts
實際上返回一個非空列表:
def doSomethingBeforeSendingOrder: Future[String] = { ... }
for {
p <- getProducts
// how do I invoke doSomethingBeforeSendingOrder before sendOrder and
// only if getProducts actually returns a nonEmptylist?
o <- Future.sequence(p.map(senderOrder(_,IDontKnowWhatThisIntMeans)))
} yield o.length
第二arg爲項目發送的只是數......但在這裏它只是一個細節; - )現在的問題是,如何在* sendOrder之前調用另一個方法,並且只有getProducts實際返回一個非空列表(請參閱我的更新後的文章)? – j3d
我更新了包含過濾器的答案/ if – melps
完美,謝謝;-) – j3d