ユースケースは実際にはかなり典型的です。多くの Web サービスは、セッションの開始時に取得した認証トークンを使用し、後続の要求でそれらを送り返す必要があります。
私は次のようにできることを知っています:
lazy val myData = {
val request = ws.url("/some/url").withAuth(user, password, WSAuthScheme.BASIC).withHeaders("Accept" -> "application/json")
Await.result(request.get().map{x => x.json }, 120.seconds)
}
すべてのドキュメントが決して私たちを待っていないと言っているので、それは間違っているように感じます.
これを処理する Future/Promise Scala スタイルの方法はありますか?
.onComplete
Promise の完了時にコードを実行できることを発見しましたが、(変更可能な) a を使用しvar
ないと、そのスコープの値を別のスコープの a に取得する方法がわかりませんlazy val
。を使用しても、var
タイミングの問題が発生する可能性があります-したがって、可変変数の悪:)
これを行う他の方法はありますか?