ビューアクションページにApiResponseオブジェクトが必要な私のプレイアクションに問題がありますが、私は未来[ApiResponse]であり、 "unwrap"未来。この未来を私のビューページに渡すときの解決方法
def confirm(token: String) = Action async { request =>
// loadTokenInfo returns Future[Option[SP]]
loadTokenInfo(token).map { maybeSP =>
maybeSP match {
case Some(sp) =>
val someConfig = SomeConfiguration(..)
// confirmSubscription returns Future[ApiResponse]
for {
apiResp <- apiService.confirmSubscription(sp.account, sp.website, sp.list, sp.listMember)
} yield Ok(views.html.subscription.confirm(ConfirmPageViewModel(someConfig, sp, apiResp)))
case _ =>
Ok(views.html.errorpage.empty(PageNotFound("asdf")))
}
}
}
私はエラーを取得しています:
[error] found : scala.concurrent.Future[play.api.mvc.Result] [error] required: play.api.mvc.Result
を私もapiRespの上にマッピングすることを試みたが、それは動作しませんでした:
apiResp.map { r =>
Ok(views.html.subscription.confirm(ConfirmPageViewModel(pageConfig, sp, r)))
}
私はAwait.resultを呼び出す必要がありますここに?私は明らかにブロックしたくないが、この時点で何をすべきかはわからない。
そして、 'loadTokenInfo'の後に' flatMap'を使うべきです。 – vdebergue
'Future'ではなく' Option'を返すと思うので、それについてはあまりよく分かりませんが、これらの機能は、言うことは難しいです。 – Vidya
confirmSubscriptionが – Blankman