好的,我的问题很简单,
我的应用程序正在使用Play framework 2.1运行,有时我需要使用jQuery创建几个ajax请求,这些请求完全独立。
这样的事情:
$.get('/url1', function(res){ ... });
$.get('/url2', function(res2){ ... });
在我的Play控制器中,我只是这样做:
public Result foo(){
theObject = // retrieving the object...
return ok(Json.toJson(theObject));
}
有时候(并不总是,这就是为什么它很奇怪),服务器返回我需要的东西。而其他时候,它在两个回调中给出了相同的结果,好像最后一个请求覆盖了第一个请求的结果。
我认为这是一个jQuery问题,但是当我在Play控制器中记录结果时,在返回之前,它告诉我有时候,第一个url永远不会被调用而第二个url连续被调用两次(和反之亦然,随机......)。
我正在使用MongoDB作为数据库。
似乎Play正在使用相同的线程来处理请求或类似的东西......
你怎么看? jQuery?玩框架?蒙哥?谁有罪?
提前致谢!
编辑: 我只是尝试在setTimeout()回调中进行第二次调用,延迟为... 0毫秒,结果是结果良好并且似乎没有冲突了... 但是,您将理解我无法将所有调用包装在单独的setTimeout()回调中... 为什么在零毫秒超时后不再发生这种情况?这是一个闭包/ javascript上下文问题吗?
答案 0 :(得分:2)
在我的团队中,我们遇到了同样的问题,并在Play问题上发现了一个非常相似的问题: https://github.com/playframework/playframework/issues/1383
该问题的解决方案为我们解决了迄今为止的问题:
Play动作是有状态的,每次请求都必须实例化一次。默认情况下,bean是>春天的单身人士。您需要将它们配置为原型。