玩!框架 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()
函数将类型 Double
的 pi
值转换为 Result
,只要 computePIAsynchronously
是完成。
but what's the logic of calling the apply method inside an implementation of Function?
这就是Promises
和Scala
的美妙之处。 Scala promise 框架将确保在兑现 promise 时应用该函数。如果您想阅读有关此主题的内容,我建议您获取 scala.concurrent.ExecutionContext
.
的资源和文档
我正在阅读 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 functionfunction
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()
函数将类型 Double
的 pi
值转换为 Result
,只要 computePIAsynchronously
是完成。
but what's the logic of calling the apply method inside an implementation of Function?
这就是Promises
和Scala
的美妙之处。 Scala promise 框架将确保在兑现 promise 时应用该函数。如果您想阅读有关此主题的内容,我建议您获取 scala.concurrent.ExecutionContext
.