我使用 Spray API 来监听来自服务器的请求。一个特定的 scala 类中的计算最终会阻止 Spray 在整个应用程序中响应。这是对问题的轻微简化,但我可以提供更多信息。如果需要的话。
class SomeClass(implicit execc: ExecutionContext){
implicit val x = ...
val foo = Await.result(...someFunc(x))
}
我添加了这个导入,它解决了我的问题:
import scala.concurrent.ExecutionContext.Implicits.global
谁能解释这是如何或为什么起作用的?
==================================================== =
编辑:
OuterClass 实例化 SomeClass,但它本身从未使用 ExecutionContext 参数实例化。看来它可能默认使用全局执行上下文,这就是为什么它会阻塞呢?
class OuterClass(executor: ExecutionContext){
val s = new someClass
}
val x = (new OuterClass).someFunction