我正在阅读 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 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);
}
}
将使用中定义的
。ok()
函数将Double
类型的pi
值转换为Result
computePIAsynchronously
完成后立即 >Controller
but what's the logic of calling the apply method inside an implementation of Function?
这就是 Promises
和 Scala
的美妙之处。 Scala promise 框架将确保在兑现 promise 时应用该函数。如果您想深入了解这个主题,我建议您获取 scala.concurrent.ExecutionContext
的资源和文档。
关于java - 玩!框架 Java Promise 示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30127623/