我不得不将调度http请求包装到另一个Future中,因为看起来初始网络连接可能会阻塞(在Netty或其背后的任何内容 - 例如,当计算机仅连接到具有静态IP的其他计算机时并且没有DNS;实际创建未来之前十秒或更长时间的系统块)。而不是
Http(req.OK(JsonUTF))
我现在
Future {
blocking(
Http(req.OK(JsonUTF))
)
} .flatMap(identity)
这是对的吗? flatMap(identity)
超过flatten
是否有任何不利之处,仅在Scala 2.12中使用了一些"内部执行者"?
或者我应该使用
Future {
val jsonFut = blocking(
Http(req.OK(JsonUTF))
)
Await.result(jsonFut, Duration.Inf)
}
答案 0 :(得分:0)
如果您执行以下操作,则可以使用单个flatMap
调用:
Future.successful(()).flatMap(_ => blocking { Http(req.OK(JsonUTF)) })
//您可以在Scala 2.12上用Future.UNIT替换Future.successful(())