如何控制在jQuery $(document).ready中调用的函数的顺序

我需要能够控制在$(document).ready事件中处理的项目的顺序.
这些是多个控件,从多个文件加载,所有请求在ready事件中调用.他们都开始异步调用服务器( AJAX).只有在他们完成之后,我需要做一些额外的工作.

什么是优雅的解决方案?

解决方法

异步请求按顺序触发,但会以任何顺序返回.所以没有一个确切的防火方式来强制他们在同一时间结束,但是,您可以构建规则,以便在某些组返回后才运行代码.

例如,使用一组规则定义回调函数,并将其传递给所有ajax请求的每个成功回调.

var completedobject = {};

function groupSuccessCallback() {
  // Test for any combination of requirements
  if ( completedobject.ajax1 && completedobject.ajax2 ) {
    ... // Do something that only requires 1 and 2
  }
  if ( completedobject.ajax1 && completedobject.ajax2 && completedobject.ajax3) { 
    ... // Do something that requires all 3 being done
        // your data is available at completedobject.ajax#
  }

  // Or test for _all_ entries for a dynamic count
  var allComplete = true;
  for(var i in completedobject) {
     if ( completedobject.hasOwnProperty(i) && !completedobject[i] ) {
       allComplete = false;
     }
  }

  // Do whatchya need.
  if (allComplete) { 
    alert("bb-b-bb-b-b-b-bbb... that's all folks!");
  }
}

然后在你的成功功能里面设置标志:

// Ajax1
completedobject['anything'] = false; // instantiate a dynamic entry in the object or use an array if you can't use names.
$.ajax({
  ...,...,success: function(data) {
    completedobject['anything'] = data || true;
    groupSuccessCallback();
  }
});

相关文章

页面搜索关键词突出 // 页面搜索关键词突出 $(function () {...
jQuery实时显示日期、时间 html: <span id=&quot...
jQuery 添加水印 <script src="../../../.....
中文:Sys.WebForms.PageRequestManagerParserErrorExceptio...
1. 用Response.Write方法 代码如下: Response.Write(&q...
Jquery实现按钮点击遮罩加载,处理完后恢复 思路: 1.点击按...