有没有办法得到一个Action
它可以返回 Result
或 Promise<Result>
?
场景是基于请求(参数和 header ),操作决定是否返回一个简单的 Result
。或者它需要向另一个服务发出 http 请求,然后才返回结果,所以要使用 Promise<Result>
.
路线:
GET /dosomething controllers.MyController.doSomething()
Java:
public static Result doSomething() {
Request request = request();
if (...) {
return getData();
} else {
return ok(...);
}
}
private static Promise<Result> getData() {
...
}
问题是如果Action
返回一个(在它的签名中)然后我不能返回另一个...
关于如何解决这个问题有什么想法吗?
最佳答案
如评论中所述,最简单的方法是始终返回一个 Promise,并用已完成的 Promise 包装非异步操作。要在完成的 promise 中包装一个值,只需使用静态 pure
方法:
public static Promise<Result> doSomethingAsync() {
if (...) {
return getData();
} else {
return F.Promise.pure(ok(...));
}
}
关于java - 返回 Result 或 Promise<Result> 的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22662824/