我用了 mapAsync(1)
的代码没有达到我想要的效果。但是当我使用 Await.result
把 mapAsync(1)
改成了 map
,它就能够正常工作。所以我有一个问题。
(A)使用 map
和 (B)使用 mapAsync(1)
会在任何时候产生相同的结果吗?
// (A) Use map
someSource
.map{r =>
val future = makeFuture(r) // returns the same future if r is the same
Await.result(future, Duration.Inf)
}
// (B) Use mapAsync(1)
someSource
.mapAsync(1){r =>
val future = makeFuture(r) // returns the same future if r is the same
future
}
实际上,我想粘贴我的真实代码,但它太长了,而且有一些依赖于我原始阶段的内容。
mapAsync
本身返回一个Future[T]
,我认为没有必要再用makeFuture
创建另一个 future 来包装它。 - Yuval ItzchakovSource[O, Mat]#mapAsync[T](par: Int)(f: O => Future[T])
返回的是Source[T, Mat]
,而不是Future[T]
。 - ryomakeFuture
的代码长什么样,r
的类型是什么? - cmbaxterr
的类型是akka.util.ByteString
,但我认为它的类型可以是任何东西。 - ryo