期货序列的未来顺序?

时间:2017-08-07 19:34:28

标签: scala future

假设,我有一个抽象的"制作人"实例:

  trait Producer[T] {
    def listObjectIds: Future[Seq[String]]
    def getObject(id: String): Future[T]
  }

我需要对它产生的每个(或一些)对象应用一些处理。 所以,我做了类似的事情:

  producer
    .listObjectIds
    .map(maybeFilter)
    .map(_.map(producer.getObject))

...最后以Future[Seq[Future[T]]]结束 这没关系,但有点麻烦。我想摆脱外部Future,只有Seq[Future[T]],但不能想到(非阻塞)转换,这会让我这样做。

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

无法以Seq[Future[T]]结束。请参阅https://www.raywenderlich.com/59255/afnetworking-2-0-tutorial

但有可能以Future[Seq[T]]结尾。只需致电.flatMap(Future.sequence)上的Future[Seq[Future[T]]