如何调用 Await.ready 函数返回 EitherT[Future,Failure,Result]
How to call Await.ready for function returning EitherT[Future,Failure,Result]
(1) 我有一个函数 returns EitherT as
createData(m):EitherT[Future, Failure, Result]
(2)我想按顺序进行以下转换,以便等待对createData的每次调用都一个一个完成。
val futures = group.map { m => Future {createData(m)}}
Await.ready(Future.sequence(futures),10)
(3) 但是,Await.ready需要Future传入,所以在上面的代码中,我用Future包裹了EitherT。但我认为上面的代码(2)没有做我想做的。因为 Await 只是为了 Outer Wrapper Future 而它并不关心 createData 的内部 true Future 是否完成。
我的问题:
在这种情况下(EitherT Future)我应该如何调用 Await 来等待对 createData 的每个内部顺序调用一一完成?
.value
returns 您未转换的类型。 F
在您的情况下是 Future
:
val value: F[Either[A, B]]
这意味着您的问题应该归结为(类型仅供说明):
val futures: List[Future[Either[Failure, Result]]] = group.map {m => createData(m).value}
val results: List[Either[Failure, Result]] = Await.ready(Future.sequence(futures), 10)
(1) 我有一个函数 returns EitherT as
createData(m):EitherT[Future, Failure, Result]
(2)我想按顺序进行以下转换,以便等待对createData的每次调用都一个一个完成。
val futures = group.map { m => Future {createData(m)}}
Await.ready(Future.sequence(futures),10)
(3) 但是,Await.ready需要Future传入,所以在上面的代码中,我用Future包裹了EitherT。但我认为上面的代码(2)没有做我想做的。因为 Await 只是为了 Outer Wrapper Future 而它并不关心 createData 的内部 true Future 是否完成。
我的问题:
在这种情况下(EitherT Future)我应该如何调用 Await 来等待对 createData 的每个内部顺序调用一一完成?
.value
returns 您未转换的类型。 F
在您的情况下是 Future
:
val value: F[Either[A, B]]
这意味着您的问题应该归结为(类型仅供说明):
val futures: List[Future[Either[Failure, Result]]] = group.map {m => createData(m).value}
val results: List[Either[Failure, Result]] = Await.ready(Future.sequence(futures), 10)