2016-07-04 8 views
0

将来の結果リストを返すために先物と非先物が混在するための理解(またはフラットマップ)を行うにはどうすればよいですか?例:タイプとWSコールが混在しているコンパイル例

private def fetchWSResponseBodies(futureSetLongs: Future[Set[Long]]): Future[List[String]] = { 
    for { 
     setLongs: Set[Long] <- futureSetLongs 
     long: Long <- setLongs // Mulitple longs 
     wsRespone: Future[WSResponse] <- ws.url(s"someURL/$long").get 
    } yield { 
     wsRespone.body 
    } 
    } 

私はflatmaps /マップまたは何か他のものを使用して、非ブロッキングコードにこのロジックを推定する方法を考え出す困難抱えています。ヘルプは高く評価しました!

+3

を[フューチャー[T]]'フューチャー 'へ[一覧[T]]' 'Future.sequenceを使用(/ * for-comp * /) 'となります。 – jwvh

+0

WSとは何ですか?ここにあるコードからコンパイルエラーが発生しますか? – marios

+0

私はWSがPlay WS APIだと思います – mfirry

答えて

0

このコンパイルする必要がありますが、任意のエラー処理行いません: `リストから取得するには

private def fetchWSResponseBodies(futureSetLongs: Future[Set[Long]]): 
    Future[List[String]] = 
    futureSetLongs.flatMap { ids => 
    Future.sequence(ids.map { id => 
     ws.url(s"someURL/$id").get().map(_.body) 
    }.toList) 
    } 
関連する問題