如何创建不同类型地图的未来

时间:2017-09-08 20:56:01

标签: scala

我正在使用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的返回地图并生成一个新地图。新地图将包含futureMapkeyToNewFutureMap中显示的唯一键。

keyToFutureMapMap[Long, Future[Option[Int]]]的形式提供,这就是我使用collect将其转换为Future[Map[Long, Int]]

的原因

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

如果我理解正确,你想要这个:

val newFutureMap = Future.traverse(simpleMap) {
  case (key, value) =>
    getAFutureFromValue(value).map(key -> _)
}.map(_.toMap)