2023 08 31
2023-08-31¶
Scala Future map, for, recover¶
참고: https://partnerjun.tistory.com/37
- map, filter
- 언젠가 값을 가지는 Future에 대해 고차함수를 적용해 새로운 Future를 얻을 수 있음
- for
- for문도 쓰자요
-
recover
- 고차함수나 for 모두 Future를 반환
- 실제 값을 구하려면 결국 onComplete 메서드에 부분함수를 작서아거나
- Await.result를 통해 동기적으로 기다려야 해
-
Future가 실패해 None이 발생하면 예외 처리를 해줘야해
- onComplete
- Await.result
recover를 사용하면 Await.result 함수로 값을 얻을 수 있음!- Future 반환값이 None이면 이걸 뱉어주세요!
recoverWith를 통해 새로운 Future를 반환해 작업을 이어가는 방법도 있음!val future: Future[Int] = Future { TimeUnit.SECONDS.sleep(2L) 2 } val future2: Future[Int] = Future { TimeUnit.SECONDS.sleep(1L) 3 } val futureFiltered: Future[Int] = future.filter(_ > 10) // None (NoSuchElementException) val futureRecoverWith: Future[Int] = futureFiltered.recoverWith { case e: NoSuchElementException => println("recover") future2 } val result = Await.result(futureRecoverWith, Duration.Inf) println(result) // 3