Syncronous Scala Future没有单独的线程
发布时间:2020-12-16 18:38:33 所属栏目:安全 来源:网络整理
导读:我正在构建一个库,作为其功能的一部分,它发出HTTP请求.为了让它在多种环境中工作,它将被部署,我希望能够使用或不使用Futures. 一种选择是让库参数化其响应的类型,以便您可以创建类型为Future的库的实例,或者类型为Id的实例,具体取决于您是否使用异步HTTP实现
我正在构建一个库,作为其功能的一部分,它发出HTTP请求.为了让它在多种环境中工作,它将被部署,我希望能够使用或不使用Futures.
一种选择是让库参数化其响应的类型,以便您可以创建类型为Future的库的实例,或者类型为Id的实例,具体取决于您是否使用异步HTTP实现. (Id可能是一个Identity monad – 足以向用户公开一致的接口) 我已经开始采用这种方法,但它已经变得复杂了.我真正想要做的是在任何地方使用Future类型,在必要时在Future中装箱同步响应.但是,据我所知,使用Futures总是需要某种线程池.这不会在例如AppEngine(必需的环境). 有没有办法从将在当前线程上执行的值创建Future,从而在不可能生成线程的环境中不会导致问题? (p.s.作为附加要求,我需要能够将库交叉构建回Scala v2.9.1,这可能会限制scala.concurrent中可用的功能) 解决方法
根据我的理解,你希望执行一些事情然后用Future包装结果.在这种情况下,您始终可以使用Promise
val p = Promise[Int] p success 42 val f = p.future 因此,您现在有一个包含最终值42的未来包装器 承诺很好地解释了here. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |