有没有办法在控制器外部使用await()机制?
我不希望代码在控制器中进行异步调用,而是将该代码放在可由多个控制器重用的服务类中,但是,由于该方法受到保护,因此无法在控制器外调用等待.
例如在控制器中:
ServiceClass service = new My ServiceClass();
MyObject myObject= service.getMeAnObject();
render(myObject);
Run Code Online (Sandbox Code Playgroud)
和服务类:
public class ServiceClass
{
...
public MyObject getMeAnObject()
{
String url = "http://...";
Promise<HttpResponse> promise = url(url).getAsync();
// do something here similar to await in a controller
// that suspends the code waiting for the response
// to be retrieved
HttpResponse response = promise.get();
return buildMyObjectFromResponse(reponse);
}
...
}
Run Code Online (Sandbox Code Playgroud)
有没有办法实现这样的目标?
谢谢你的帮助.
编辑:我遵循Pere的建议,并使服务类实现Controller,但是它有效,必须增强使用它的控制器.我发现完成这项工作的唯一方法是至少在调用控制器类中调用await方法().
但是,我仍然没有验证代码实际上是暂停的.
编辑2:我从google小组获得的一个建议是我应该尝试在控制器中进行等待,所以也许更好的解决方案是让服务返回Promise并让控制器等待这个然后就没有了我的方式是todo吗?
例如在控制器中:
ServiceClass service = new My ServiceClass();
Promise<MyObject> promise = …Run Code Online (Sandbox Code Playgroud) 使用play framework 2.1,我正在尝试找到两种不同数据库配置的最佳方法:
虽然很容易做到这一点,但当我尝试两者时,我遇到了以下问题:
我的问题:任何人都可以推荐一个好的方法来做两个(一直是mysql,只测试H2),而不会过度复杂地运行应用程序?谷歌没有帮助我.
谢谢你的帮助.