0
ディスパッチHTTPリクエストを別のFutureにラップする必要があったのは、初期のネットワーク接続がブロックされる可能性があるからです(Netty、たとえば、コンピュータがスタティックIPとDNSのない他のコンピュータに接続されていて、実際に将来10秒以上前のシステムブロックが作成されている場合)。だからではなく、別の未来に将来的に出現する前にブロックするコードを壊す正しい方法
Http(req.OK(JsonUTF))
の私が今持っている
Future {
blocking(
Http(req.OK(JsonUTF))
)
} .flatMap(identity)
これは正しいですか? のflatten
以上の不利な点はありますか?Scala 2.12のみで、いくつかの「内部実行プログラム」を使用していますか?
または私は
Future {
val jsonFut = blocking(
Http(req.OK(JsonUTF))
)
Await.result(jsonFut, Duration.Inf)
}
を使用する必要がありますか?
'Future.Successful(())ですが、' 'Future(x).flatMap(identity)'と違うのはflatMap(x)ですか? –
はい。 Future.apply(x)はFuture.successful(()と合成的に同等です)map(_ => x) –
Future(x).flatMap(identity)は次のようになります:Future.successful(())。map => x).flatMap(identity)。あなたが望むのはFuture.successfulです(())。flatMap(_ => x) –