java - 玩!框架 Java Promise 示例

标签 java playframework-2.0 promise java-7

我正在阅读 Java 的 Play 框架,但在 Java 方面没有太多经验。有人可以解释一下吗

Promise<Double> promiseOfPIValue = computePIAsynchronously();
Promise<Result> promiseOfResult = promiseOfPIValue.map(
  new Function<Double,Result>() {
    public Result apply(Double pi) {
      return ok("PI value computed: " + pi);
    }
  }
);

我知道他们正在创建一个 promise promiseOfPiValue,它应该异步计算 double。然后,他们在 promise 实例上调用 map,他们将 Function 的新实例作为参数传递给该实例,该实例实现了 apply方法。

map 部分是我迷路的地方—— map 方法是如何工作的?看起来它返回了一个 Result 类型的新 promise ,但是在 Function 的实现中调用 apply 方法的逻辑是什么?

最佳答案

来自 Play 文档:

Maps this promise to a promise of type B. The function function is applied as soon as the promise is redeemed.

函数:

new Function<Double,Result>() {
    public Result apply(Double pi) {
      return ok("PI value computed: " + pi);
    }
}

将使用中定义的ok()函数将Double类型的pi值转换为Result computePIAsynchronously 完成后立即 >Controller

but what's the logic of calling the apply method inside an implementation of Function?

这就是 PromisesScala 的美妙之处。 Scala promise 框架将确保在兑现 promise 时应用该函数。如果您想深入了解这个主题,我建议您获取 scala.concurrent.ExecutionContext 的资源和文档。

关于java - 玩!框架 Java Promise 示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30127623/

相关文章:

java - 当 bean 具有带有 @Formula 注释的属性时,findRowCount 不起作用

javascript - 如何在 play 框架项目中从 javascript 更新 img 的 src?

scala - playframework 禁用 CSRF 过滤器

javascript - 在 JavaScript 中等待两个异步命令

java - 设置 Java 编译器合规性级别

java - 来自外部类的 Android Canvas 不会显示在 Fragment 中

java - 字符串 a == 字符串 b 的规则

java.lang.UnsatisfiedLinkError 和 ADB 中的未知错误

javascript - 使用 promise 中的 Prop

javascript - React 严格模式和双重渲染