[Scala] Future 여러 개를 하나로 merge하기

Wan Geun Lee / June 22, 2020

아래와 같은 Future Iterable를 생성하는 로직이 있다고 하자.

Scala
0
1
2
3
4
val futures: Iterable[Future[MyResult]] = for {
  condition <- conditions
} yield {
  conditionChecker.ask[MyResult](ref => Check(source, condition, ref))
}

future를 하나로 합성하여 한 방에 처리하고 싶을 땐 어떻게 해야할까?

Scala
0
val future: Future[Iterable[MyResult]] = Future.sequence(futures)

Future.sequence쓰면 Iterable[Future[MyResult]]Future[Iterable[MyResult]]로 변환해준다.

 

참고로 책 '스칼라로 배우는 함수형 프로그래밍'의 137 페이지에는 저 sequence를 직접 코딩해보는 문제가 들어있다. (어려움 ㅜㅜ)