use*_*088 6 java promise java-7 playframework-2.0
我正在阅读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);
}
}
);
Run Code Online (Sandbox Code Playgroud)
我知道他们正在创建一个promiseOfPiValue
应该异步计算双重的承诺.然后,他们调用map
那个他们传递一个新实例Function
作为参数的promise实例,该实例实现了一个apply
方法.
地图部分是我迷路的地方 - 地图方法如何运作?看起来它返回了一个新的类型的承诺Result
,但是在实现中调用apply
方法的逻辑是什么Function
?
来自播放文档:
将此承诺映射到类型的承诺
B
。function
一旦承诺被兑现,该功能就会被应用。
功能:
new Function<Double,Result>() {
public Result apply(Double pi) {
return ok("PI value computed: " + pi);
}
}
Run Code Online (Sandbox Code Playgroud)
完成后将立即使用定义的函数将pi
类型的值转换Double
为。Result
ok()
Controller
computePIAsynchronously
但是在 Function 的实现中调用 apply 方法的逻辑是什么?
Promises
这就是和的美妙之处Scala
。Scala Promise 框架将确保在赎回 Promise 时应用该函数。如果您想阅读该主题,我建议您获取scala.concurrent.ExecutionContext
.