컬렉션 API의 콤비네
두 Future
중 하나라도 실패하면 flatMap의 결과값으로 나온 Future
도 또한 실패할 것이다.
묵시적으로 오류를 넘기는 것을 통해 의미상 중요한 경우에만 오류를 처리할 수 있다. flatMap
은 이런 의미를 가지는 콤비네이터를 정의할 때 표준적으로 사용하는 이름이다.
-Future가 있고, 그 결과에 비동기 API를 젹용할 생각이면 flatMap을 써라. 예를 들어 Future[User]가 있고 어떤 사용자 계정이 사용중지되었는지를 표시하는 Future[Boolean]이 필요하다 하자. 어떤 사용자가 사용정지상태인지를 파악하는 isBanned
API가 있을 것이다. 그런데, 이 함수가 비동기적이라 하자. 이럴 때 flatMap을 쓸 수 있다.
+Future가 있고, 그 결과에 비동기 API를 적용할 생각이면 flatMap을 써라. 예를 들어 Future[User]가 있고 어떤 사용자 계정이 사용중지되었는지를 표시하는 Future[Boolean]이 필요하다 하자. 어떤 사용자가 사용정지상태인지를 파악하는 isBanned
API가 있을 것이다. 그런데, 이 함수가 비동기적이라 하자. 이럴 때 flatMap을 쓸 수 있다.
scala> import com.twitter.util.{Await, Future,Promise}
@@ -329,7 +329,7 @@ def getTimeline(cred: Credentials): Future[Timeline] =
}
-이 가상의 예제는 순차와 동시 합성을 함께 사용한다. 비율 제약이 걸려 예외가 발생하는 경우를 빼고는 아무 오류 처리가 없다는 점을 확인해 보라. 사용된 Future중 어느 하나가 실패한다면, 그 사실은 반환되는 Future
에 자동으로 전달된다.
+이 가상의 예제는 순차와 동시 합성을 함께 사용한다. 비율 제약이 걸려 예외가 발생하는 경우를 빼고는 아무 오류 처리가 없다는 점을 확인해 보라. 사용된 Future 중 어느 하나가 실패한다면, 그 사실은 반환되는 Future
에 자동으로 전달된다.