gpt4 book ai didi

scala - 没有单独线程的同步 Scala Future

转载 作者:行者123 更新时间:2023-12-04 20:10:29 25 4
gpt4 key购买 nike

我正在构建一个库,作为其功能的一部分,发出 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

因此你现在有一个 future包含最终值的包装器 42
Promise 解释得很好 here .

关于scala - 没有单独线程的同步 Scala Future,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17993735/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com