玩!框架 Java Promise 示例

Play! framework Java Promise example

我正在阅读 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 方法。

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

来自播放文档:

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);
    }
}

将使用 Controller 中定义的 ok() 函数将类型 Doublepi 值转换为 Result,只要 computePIAsynchronously 是完成。

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

这就是PromisesScala的美妙之处。 Scala promise 框架将确保在兑现 promise 时应用该函数。如果您想阅读有关此主题的内容,我建议您获取 scala.concurrent.ExecutionContext.

的资源和文档