小编alb*_*ami的帖子

未来的onComplete和flatMap有什么区别?

我正在使用ReactiveMongo驱动程序编写Scala应用程序.访问db的方法总是返回Future[T].以下代码是否相同?

(有onComplete)

val results: Future[List[Tag]] = Tags.all.toList
results onComplete {
    case Success(list) => //do something with list
    case Failure(t) => //throw the error
}
Run Code Online (Sandbox Code Playgroud)

(有flatMap)

Tags.all.toList.flatMap(list => //do something with list)
Run Code Online (Sandbox Code Playgroud)

有什么不同?

flatMap不会抛出失败?这flatMap是一个回调,onComplete或者等到Tags.all.toList语句没有完成?

asynchronous scala future reactive-programming

15
推荐指数
1
解决办法
8671
查看次数

将play 2.2应用程序移植到2.3.2版本(Scala)时出错

我正在将Play 2.2应用程序移植到Play 2.3应用程序(Scala).为此,我将安全的社交版本更改为支持Play 2.3的主-SNAPSHOT.但是在编译时遇到我的播放控制台中的错误.

怎么了?

[error] /Users/alberto/git/recommendation-system/app/security/CustomTemplatesPlugin.scala:33: ambiguous implicit values:
[error]  both method request2lang in trait Controller of type (implicit request: play.api.mvc.RequestHeader)play.api.i18n.Lang
[error]  and value lang of type play.api.i18n.Lang
[error]  match expected type play.api.i18n.Lang
[error]     securesocial.views.html.Registration.signUp(form, token)
[error]                                                ^
[error] /Users/alberto/git/recommendation-system/app/security/CustomTemplatesPlugin.scala:44: could not find implicit value for parameter env: securesocial.core.RuntimeEnvironment[_]
[error]     securesocial.views.html.Registration.startSignUp(form)
[error]                                                     ^
[error] /Users/alberto/git/recommendation-system/app/security/CustomTemplatesPlugin.scala:55: could not find implicit value for parameter env: securesocial.core.RuntimeEnvironment[_]
[error]     securesocial.views.html.Registration.startResetPassword(form)
[error]                                                            ^
[error] /Users/alberto/git/recommendation-system/app/security/CustomTemplatesPlugin.scala:66: could not find implicit value for parameter env: securesocial.core.RuntimeEnvironment[_] …
Run Code Online (Sandbox Code Playgroud)

scala playframework-2.0 securesocial

4
推荐指数
1
解决办法
1213
查看次数

从Java中的Promise [JsonNode]获取JsonNode并返回该值

我正在用Java编写Play 2.3.2应用程序.

在我的应用程序中,我调用了另一个模块的方法,用Scala编写.

此方法返回Json响应,我尝试使用WS获取它.

这是我的方法实现:

public static JsonNode getCorrelationData() {
        WSRequestHolder holder = WS.url(ConfigFactory.load().getString("host") + "/recommendation/correlation");
        Promise<JsonNode> jsonPromise = holder.get().map(
                new Function<WSResponse, JsonNode>() {
                    public JsonNode apply(WSResponse response) {
                        if (response.getStatus() != 200) {
                            Logger.error("Error on get correlation data");
                            Logger.error("Response status code: " + response.getStatus());
                            Logger.error("Response status text: " + response.getStatusText());
                        }

                        return response.asJson();
                    }
                });



        //here I want to obtain the JsonNode inside the jsonPromise object, and return it.
    }
Run Code Online (Sandbox Code Playgroud)

但问题是回调返回一个Promise,我的方法需要返回一个JsonNode.

如何在Promise中获取JsonNode?我无法找到解决问题的方法.

在Scala我知道我可以在Future [T]上使用flatMap.

java callback promise playframework

2
推荐指数
1
解决办法
2634
查看次数