我需要能够控制在$(document).ready事件中处理的项目的顺序.
这些是多个控件,从多个文件加载,所有请求在ready事件中调用.他们都开始异步调用服务器( AJAX).只有在他们完成之后,我需要做一些额外的工作.
这些是多个控件,从多个文件加载,所有请求在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(); } });
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。