java - 返回 Result 或 Promise<Result> 的操作

标签 java playframework playframework-2.0

有没有办法得到一个Action它可以返回 ResultPromise<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/

相关文章:

java - 在我的代码中,为什么 Java 日期或日历中的月份日期不同?

ssl - 如何为 java Play 强制执行 https! Heroku 上的应用程序?

java - 在 Play 2.x Java 上集成 reCaptcha

java - Windows下模拟打印屏幕

Java:数据类型类似于javascript对象?

java - NoClassDefFoundError 使用来自 Java 的 Scala 类

playframework - 无法在 Play Framework 上获取 WebLogic 服务器的初始上下文

java - 如何在 play 2.1 RC2 中包含 native 库 (JNI)?

java - Play 框架主代码未获取

java - 在 Play 2.0 FakeRequest 中测试 MultipartFormData