复杂的未来展开

Complex future unwraping

我知道我可以展开

Future[Future[Seq]] => Future[Seq]

有flatMap功能

但是我如何获得以下映射?

Future[Seq[Future[Seq]]] => Future[Seq[Seq]]

Future.sequence 会将 Seq[Future[...]] 更改为 Future[Seq[...]]

所以,像这样:obj.flatMap(x => Future.sequence(x)) 也许吧?

这对我来说就像魔法一样有效:

implicit class RichFutureSeqFutures[A](futureSeqFutures: Future[Seq[Future[A]]]) {
  def flattenInner: Future[Seq[A]] = {
    futureSeqFutures flatMap {Future.collect(_)}
  }
}

来自 https://coveralls.io/builds/3016777/source?filename=utils%2Fsrc%2Fmain%2Fscala%2Fcom%2Ftwitter%2Ffinatra%2Fconversions%2Ffuture.scala "here" 的来源。