2013-07-12 4 views
0

저는 Play Framework (2.0.4) 및 스칼라에서 작업 중이며 문제가 있습니다.스칼라로 중첩 된 요청 및 프레임 워크 재생

저는 백엔드로 전화하여 사용자 목록을 얻습니다 (json). 그리고 각 사용자마다 백엔드에서 추가 정보 (사용자 당 하나의 요청)를 얻어야합니다. 내 서비스 그래서

, 내가 가진 :

def getUsers(/*different uninteresting parameters*/): Promise[List[Option[User]]] 

및 getUsers에 의해 반환되는 각 사용자에 대한 그래서

def getExtraUserInfo(user:User):Promise[Option[Double]] 

, 나는 getExtraUserInfo를 호출하고 사용자 플러스 여분을 반환하려면 각 사용자에 대한 정보
def getUsers(/*parameters*/) = AuthenticatedAsync{ request => 
val users = UserService.getUsers(/*parameters*/) 

    users.flatMap { 
    case Some(userList) => 
    Ok(Success("users" -> Json.toJson(userList.flatMap{ 
     user => UserService.getExtraUserInfo(user).map { 
     case Some(price) => user.price = price 
      user 
     case _ => user 
     } 
    }.map(_.json)))) 
    case _ => InternalServerError(Error("error while getting users", Errors.TECHNICAL)) 
} 
} 

너희들이 그것을 어떻게 어떤 생각을 가지고 있습니까 : 내 컨트롤러에 따라서

, 난 그런 뭔가를 시도했습니다? (이 코드는 작동하지 않지만 그게 내가 할 수있는 모든 것입니다 ...)

답변

0

약속 목록을 나열하려면 Promise.sequence을 시도하십시오. Promise.sequence는

the Play! Scala API here

참조 ... Promise[List[T]]List[Promise[T]] 변환