如何创建 Promise<Result> play2.0 框架 - Java

Posted

技术标签:

【中文标题】如何创建 Promise<Result> play2.0 框架 - Java【英文标题】:How to create a Promise<Result> play2.0 framework - Java 【发布时间】:2012-10-03 12:31:31 【问题描述】:

如何在 Play 2.0 框架 - Java 中创建Promise&lt;Result&gt;

我看到了这个链接http://www.playframework.org/documentation/2.0.4/JavaAsync。它不包含那么多细节。你知道任何教程而不是参考我。请。

【问题讨论】:

【参考方案1】:

这是在 Play 2.2 中创建 Promise 的新方法

Promise<Boolean> myPromise = Promise.promise(new Function0<Boolean>() 
    public Boolean apply() throws Throwable 
        // TODO - Add Implementation here.
        return Boolean.TRUE;
    

);

【讨论】:

这几乎对我有用,我发现我需要使用 F.Function0 而不是 Function0。【参考方案2】:

James Roper(Play 框架开发人员)有一个在 Play 中与 Java 一起使用 Promise 的好例子: https://github.com/jroper/play-promise-presentation/blob/master/src/main/java/controllers/Application.java

【讨论】:

我一直无法让这种代码工作,async() 是在哪里定义的?【参考方案3】:

如the doc that you mention 中所述,请使用Akka.future

Promise<Result> promiseOfResult = Akka.future(
    new Callable<Result>() 
      public Result call() 
        return ok("This is a promise result !");
      
    
  );

【讨论】:

我刚刚尝试在 play 2.2 中使用它,我注意到方法 Akka.future 已被弃用。 每次我在 Play 中闪烁的东西都会被弃用。【参考方案4】:
public F.Promise<Result> asyncFoo() 

          F.Promise<Integer> promise = F.Promise.promise(() -> longRunningCalculation());

          return promise.map((Integer i) -> ok("The calculation result is: " + i));


https://www.typesafe.com/blog/play-framework-with-java-8

【讨论】:

以上是关于如何创建 Promise<Result> play2.0 框架 - Java的主要内容,如果未能解决你的问题,请参考以下文章

如何获取promise对象的值

如何获取promise对象的值

如何获取promise对象的值

使用 Promise 渲染一个 Vue 应用程序,并等待用户输入

如何使用其他Promise创建Promise?

如何使用链调用 Promise?