2017-11-20 1 views
2

일부 요청을 실행 한 후 비동기 http4s 클라이언트에서 결과 모음을 얻습니다. 이 컬렉션 (Seq[Task[Response]])이 모든 Task 개체에 대해 완료되었으며 Response 개체가 특정 상태에 있는지 확인하고 싶습니다.fs2 : Seq 성공 여부 확인 (작업)

내가 대신 작업의 Future을 사용한 경우, 내가 대신 fs2.Task를 사용하여 유사한 기능을 달성 할 수있는 방법이 있나요

val results: Seq[Future[Response]] = ... 
Future.sequence(results).map(_.forall(_.customFunction.isSuccess)) 

같은 일을 할 것인가? 나의 제한된 이해에서, 나는 어떤 점에서 내가 unsafeRun에 전화해야 할 것 인 것을 당연하다고 생각한다. 그것은 컬렉션의 각각 Task를 블록킹 할 것이다.

val results: Seq[Task[Response]] = ... 
val sequence: Task[Seq[Response]] = results.foldLeft(Task.now(Seq.empty[Response])) { 
    (x, t) => x.flatMap(s => t.map(r => s :+ r)) 
} 

그런 다음 같은 방법으로 검사 성공을 수행

답변

2

당신은 같은과 Future.sequence을 대체 할 수 있습니다.

+0

감사합니다! 효과가있는 – DentArthurDent