当前位置: 首页 > 知识库问答 >
问题:

转换 Play Framework java Promise to Play Framework Scala Promise

胡野
2023-03-14

我目前正在构建一个Scala play框架应用程序,该应用程序使用一个库来返回结果,即F.Promise(Java Promise)。有没有办法转换F.promise(https://www.playframework.com/documentation/2.1.0/api/java/play/libs/F.Promise.html)加入Scalapromise,还是从F.promise中获得包装好的Scala未来?

到目前为止,我看到的唯一方法是获得F.Promise,但这是一个阻塞操作,我想继续异步工作。

第一个答案中描述的方式使我找到了这个代码。不幸的是,我不知道如何正确定义这个F.Function。代码不编译。

回答:所以,我终于发现F.Promise有一个名为wrapped()的方法。这种方法为您提供了一个Scala的未来。

共有2个答案

澹台鸿熙
2023-03-14

好吧,由于该生态系统中没有promise或未来的“标准”,因此您必须手动执行此操作。在游戏promise和Scala期货之间没有“同化”的概念。

基本上,我们对待F.Promise就像对待回调一样,我们通过创建Promise将其转换为scala Future(在scala中,令人困惑的意思是“创建未来的东西”)。以下是对其工作原理的描述,而不是代码,因为我认为这可以更好地解释原理:

  • 创建一个新的promise[T]-p
  • 调用。将映射到<code>F。promise你有,在<code>F。传递给它的函数,使用promise的值调用<code>p success,有效解决promise
  • 类似地-调用。在promise上恢复,并在其处理程序调用内恢复<code>p failure,并说明失败原因
  • 返回<代码>p。future,这是一个表示<code>p

这与您将其他任何东西转换成scala Future的方式没有什么不同。向另一个方向转换的工作方式类似。

甄成弘
2023-03-14

事实证明,类 F.Promise (java.play) 有一个名为 wrapped() 的方法,它返回由 Promise 包装的 scala.concurrente.Future。因此,您所要做的就是在F.Promise上打电话。

val promise: F.Promise[T] = getPromise()
val future : Future[T] = promise.wrapped()
 类似资料:
  • 转换操作符 在通过操作符链时进行值的转换是一个常见的任务。这些操作符提供了转换技术几乎可以涵盖你所能遇到的任何场景。 内容 buffer bufferCount bufferTime :star: bufferToggle bufferWhen concatMap :star: concatMapTo exhaustMap expand groupBy map :star: mapTo merge

  • 问题内容: 这个问题已经在这里有了答案 : T-SQL转换与转换 (7个答案) 7年前关闭。 选择什么:或用于日期时间(Microsoft SQL Server)? 我看过MSDN规范。乍一看,似乎没有什么区别,除了语法: CAST的语法: CONVERT的语法: 而且 CAST 是ANSI标准,这使其在不同的数据库平台上都更具可移植性。 问题答案: 有一个可选参数,我建议用代替。它有助于避免混乱

  • 最近,我浏览了一些网站,将中缀转换成前缀符号,最后我被卷了起来。 我已经给出了我所做的步骤。。 例:-(1(2*3))(5*6)(7/8) 方法1:-(无需任何算法的手动转换):- 方法2:- 根据现场情况http://scanftree.com/Data_Structure/infix-to-prefix 所以,在这里我完全被绞死了。 请任何人提供以下方面的信息:- 关于我在以上2种方法中哪里出

  • 主要内容:拉普拉斯变换,逆拉普拉斯变换,傅里叶变换,逆傅里叶变换MATLAB提供了处理转换的命令,如拉普拉斯和傅里叶变换。转换在科学和工程中被用作简化分析和从另一个角度看待数据的工具。 例如,傅里叶(Fourier)转换允许我们将表示为时间的函数的信号转换为频率的函数。 拉普拉斯变换允许我们将微分方程转换为代数方程。 MATLAB提供了,和命令来处理拉普拉斯,傅立叶和快速傅里叶转换。 拉普拉斯变换 时间函数的拉普拉斯转换由以下积分 - 拉普拉斯变换也表示为到的

  • 本文向大家介绍CSS 转换,包括了CSS 转换的使用技巧和注意事项,需要的朋友参考一下 示例            

  • 在少数情况下,我会传递JSON,其中包含用户执行某些操作的页面url。该页面url将有那些查询字符串部分,我需要为用户重定向到相同的页面时,从我的应用程序要求。我的JSON会像 但是当我通过运行这个json时,我看到

  • convert API at each end 各个平台之间 api 进行转换,目前已支持微信转支付宝、微信转web Usage // 使用 mpx 生态 import mpx from '@mpxjs/core' import apiProxy from '@mpxjs/api-proxy' mpx.use(apiProxy, options) // 单独使用 import apiProxy

  • 转换意味着通过应用规则将一些图形更改为其他图形。 我们可以进行各种类型的转换,例如Translation, Scaling Up or Down, Rotation, Shearing,等。 使用JavaFX,您可以在节点上应用转换,例如旋转,缩放和转换。 所有这些转换都由各种类表示,它们属于包javafx.scene.transform 。 S.No 转型与描述 1 Rotation 在旋转中,