如何实现Promise对象?

时间:2013-03-31 08:16:23

标签: playframework playframework-2.0 akka

我正在尝试将现有应用程序移植到Play框架中。应用程序使用库来执行SMPP传输,该传输已经以这样的方式实现,即消息以异步方式发送(在成功传输时调用侦听器对象的单独线程中)。我想知道如何使用相同的库并返回一个Promise对象,该对象在更新侦听器时将结果返回给Play的Web请求。

我所看到的所有示例都说明了如何使用play WS库或akka完成它,它负责在单独的线程上完成工作。如果我已经有了这样的实现,就像我上面解释的那样,我该如何将它与Play集成?

1 个答案:

答案 0 :(得分:2)

您的SMPP传输库为您提供了一个可以注册完成侦听器的句柄,对吗?在这种情况下,您应该能够创建这样的桥梁:

val p = scala.concurrent.Promise[ResultType]()
val handle = smpp.doit() // or whatever the method is called
handle.onComplete(h => p.success(h.result)) // or p.complete if things can fail
return p.future

然后,生成的Future可用于完成异步播放操作。