ada*_*ish 5 scala future threadpool
我正在构建一个库,作为其功能的一部分,它发出HTTP请求.为了让它在多种环境中工作,它将被部署,我希望能够使用或不使用Futures.
一种选择是让库参数化其响应的类型,以便您可以使用类型Future或具有类型的实例创建库的实例Id,具体取决于您是否使用异步HTTP实现.(Id可能是一个Identity monad - 足以向用户公开一致的接口)
我已经开始采用这种方法,但它已经变得复杂了.我真正想要做的是在任何地方使用Future类型,在必要时在Future中装箱同步响应.但是,据我所知,使用Futures总是需要某种线程池.这不会在例如AppEngine(必需的环境)中飞行.
有没有办法从将在当前线程上执行的值创建Future,从而在不可能生成线程的环境中不会导致问题?
(ps作为附加要求,我需要能够将库交叉构建回Scala v2.9.1,这可能会限制scala.concurrent中可用的功能)
据我了解,您希望执行某些操作,然后用 包装结果Future。在这种情况下,您可以随时使用Promise
val p = Promise[Int]
p success 42
val f = p.future
Run Code Online (Sandbox Code Playgroud)
因此,您现在有一个future包含最终值的包装器42
Promise在这里得到了很好的解释。
| 归档时间: |
|
| 查看次数: |
760 次 |
| 最近记录: |