0

我正在创建一个包含其他操作的身份验证操作,使用 Play Zentasks 示例应用程序作为模板。这需要能够做的一件事是在某些情况下访问 Web 服务,以便检索用户的详细信息。我想以非阻塞方式执行此操作,但我不想将未来传递回我正在包装的操作。

我能想到的唯一方法是使用 Enumerator.fromStream() 和从 URL 对象中提取的 InputStream。我猜这不是最好的方法,因为它似乎是重复的工作(考虑到 ws 对象)。然而,async ws api(和底层的 asynchttpclient)为所有内容返回一个 Future。我认为以前没有人解决过这个问题并且可以为我指出另一个方向吗?有什么我想念的吗?另外,像我建议的那样使用 Enumerator.fromStream() 绝对不会阻塞吗?

提前致谢,

苏切

4

1 回答 1

0

You can use the async WS api. When it returns a future, you can call map on that, and pass the value to the action you're wrapping. Now you have a future containing the result of your wrapped action. Turn that into an AsyncResult or just wrap the whole thing in an Async{} block and it should work.

于 2013-05-17T22:58:16.753 回答