我正在尝试将现有应用程序移植到 Play 框架中。该应用程序使用一个库来进行 SMPP 传输,该传输已经以异步方式发送消息的方式实现(在成功传输时调用监听器对象的单独线程中)。我想知道如何使用相同的库并返回一个 Promise 对象,当监听器更新时,该对象将结果返回到 Play 的 Web 请求。
我见过的所有例子都说明了如何使用 play WS 库或 akka 来完成它,它负责在单独的线程上完成工作。如果我已经有了这样的实现,按照我上面的解释,我该如何将它与 Play 集成?
最佳答案
您的 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 可用于完成异步 Play 操作。
关于playframework - 如何实现Promise对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15727669/