我正在使用com.twitter.util.Future,scala 2.11.11
我有这段代码,我正在尝试将其转换为未来[Map [Long,String]]
val simpleMap: Map[Long, Int] = Map(1L -> 2, 2L -> 4)
val keyToNewFutureMap = Future.collect(simpleMap.map {
case (key, value) =>
val newFuture = getAFutureFromValue(value)
key -> newFuture
}.toSeq.toMap
)
val keyToFutureMap = Map(1L -> Future.value(1))
val futureMap = Future.collect(keyToFutureMap) // converts into a
Future[Map[Long, Int]]
Future.collect(Seq(futureMap, keyToNewFutureMap)) // Stuck here
我被困在这里。我想使用两个Futures的返回地图并生成一个新地图。新地图将包含futureMap
和keyToNewFutureMap
中显示的唯一键。
keyToFutureMap
以Map[Long, Future[Option[Int]]]
的形式提供,这就是我使用collect
将其转换为Future[Map[Long, Int]]
非常感谢任何帮助。
答案 0 :(得分:0)
如果我理解正确,你想要这个:
val newFutureMap = Future.traverse(simpleMap) {
case (key, value) =>
getAFutureFromValue(value).map(key -> _)
}.map(_.toMap)