JQuery队列和出队

时间:2011-06-24 14:16:14

标签: jquery

我有多个jquery ajax调用,它们有些相互依赖。两者都会在不同时间在页面加载时触发(在getData之前调用showData,而showData依赖于首先调用getData

在某些客户端上,showData首先在getData之前运行。

  1. 如何重新创建此错误,因为我们没有看到任何地方发生这种情况。看来这取决于服务器上的负载,但我们无法确认。

  2. 要解决此问题,我了解到我可以使用Jquery的queuedequeue。但是,在certian场景中,我需要在排队基础结构之外运行它。例如,我的getData看起来像这样:

    function getData() {
    
       $.ajax(//options)
    
    }
    
    function showData() {
    
       $.ajax(//options)
    
    }
    
  3. 有时,我需要执行它们(首先调用getData),但在某些情况下,它们彼此独立,getData被调用而没有调用{{1 }}

    如果我将它们排队,我还可以独立调用它们吗?

2 个答案:

答案 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);
}