我有多个jquery ajax调用,它们有些相互依赖。两者都会在不同时间在页面加载时触发(在getData
之前调用showData
,而showData
依赖于首先调用getData
。
在某些客户端上,showData
首先在getData
之前运行。
如何重新创建此错误,因为我们没有看到任何地方发生这种情况。看来这取决于服务器上的负载,但我们无法确认。
要解决此问题,我了解到我可以使用Jquery的queue
和dequeue
。但是,在certian场景中,我需要在排队基础结构之外运行它。例如,我的getData
看起来像这样:
function getData() {
$.ajax(//options)
}
function showData() {
$.ajax(//options)
}
有时,我需要执行它们(首先调用getData
),但在某些情况下,它们彼此独立,getData
被调用而没有调用{{1 }}
如果我将它们排队,我还可以独立调用它们吗?
答案 0 :(得分:0)
为什么不将showData
附加到getData
成功回调,如下所示:
function getData(){
$.ajax({
url: "/your.url",
success: showData
});
}
function showData(){
// foo bar here
}
除非 showData
成功,否则您还可能需要致电getData
这一事实。
答案 1 :(得分:0)
我认为你应该使用jQuery 1.5+中可用的Deferred object类型而不是队列:
function getData() {
return $.ajax(...);
}
function showData() {
return $.ajax(...);
}
var gd = getData();
if (showDataNeeded) {
// only call showData() when getData() has finished
gd.done(showData);
}