好的,我的问题很简单,
我的应用使用 Play 框架 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 从未被调用,第二个被连续调用两次(反之亦然,和随机...)。
我正在使用 MongoDB 作为数据库。
似乎 Play 正在使用相同的线程来处理请求或类似的东西......
你怎么看待这件事 ?jQuery 吗?播放框架?蒙哥?谁有罪?
提前致谢 !
编辑:我只是尝试在 setTimeout() 回调中进行第二次调用,延迟为 ...0 毫秒,结果是结果很好,似乎不再有冲突......但是,你会明白我不能将我所有的调用都包装在一个单独的 setTimeout() 回调中......为什么这不会再发生零毫秒超时?这是一个闭包/javascript上下文问题吗?