【发布时间】:2015-06-18 08:54:48
【问题描述】:
鉴于以下返回Future的方法...
def getProducts: Future[List[Product]] = { ... }
def sendOrder(p: Product, n: Int): Future[Order] = { ... }
...我需要为getProducts 返回的每个产品调用sendOrder,最后yield 处理的产品数量:
for {
products <- getProducts
// how do I iterate thru products and invoke sendOrder for each element?
...
} yield products.length
上面for理解中的商品列表如何处理?
编辑
事情变得更加复杂,因为我需要在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
【问题讨论】:
标签: scala future for-comprehension