我正在使用via
调用方法,如下所示:
myRawStr(id)
.take(1)
.via(myMethod("someString", someSource)
.zip(Source.fromIterator(() => Iterator.from(1)))
.collect {
...
}
myMethod
返回类型Flow[ByteString, MyValidated[MyClass], NotUsed]
,但现在它将返回Future[Flow[ByteString, MyValidated[MyClass], NotUsed]]
(注意:将来)
但是这样做会使我在via
上出现编译错误。错误状态:
[error] found : [as, mat, ec]scala.concurrent.Future[akka.stream.scaladsl.Flow[akka.util.ByteString,MyValidated[MyClass],akka.NotUsed]]
[error] (which expands to) [as, mat, ec]scala.concurrent.Future[akka.stream.scaladsl.Flow[akka.util.ByteString,scala.util.Either[List[ValidationError],MyClass],akka.NotUsed]]
[error] required: akka.stream.Graph[akka.stream.FlowShape[akka.util.ByteString,?],?]
[error] .via(myMethod("someString", someSource))
[error]
如何通过在流程中添加另一个步骤来修改此规则以接受Future
或based on this question返回非将来?
答案 0 :(得分:1)
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.0.0/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.0.0/umd/react-dom.production.min.js"></script>
<div id="react"></div>
接受via
作为参数。您要么必须更改Flow
才能返回MyMethod
而不是Flow
。或者,也可以使用Future
来代替via
,它使用返回mapAsyc
(MyMethod)的方法来映射您的流:
https://doc.akka.io/docs/akka/2.5/stream/operators/Source-or-Flow/mapAsync.html