解决多次异步请求紊乱问题 - JavaScript
加入目前的需求这样的:
左边的菜单链接,点击后通过异步请求返回其HTML代码,然后innerHTML到右面的DIV中,加入切换菜单的速度非常快,最终会导致请求紊乱。
可以加入消息管理机制,下面一个例子,代码没有优化,只提供思路。
1. [代码][JavaScript]代码
// 在DOMready的时候创建一个消息管理器messageMgr,包含一个队列(Queue),增(Create)、删(Remove)、判断(isAvailable)函数。
//给每个module设置一个Action,此Action必须有init,dispose方法,init方法先Create一个时间戳(Token),压入Queue并返回给Action保持。异步请求的时候携带该Token,在callback函数执行之前判断(isAvailable)此Token是否在Queue中,防止非正常的回调。ppt素材
//只有当该Action被销毁(dispose)的时候删除该Token,然后操作其他的事件卸载(onBind).
var messageMgr = {
__Queue: [],
Create: function(){
var __key = new Date().getMilliseconds();
this.__Queue.push(__key);
return __key;
};
Remove: function (token) {
token && baidu.array.remove(this.__Queue, token);
},
isAvailable:function (token) {
return baidu.array.contains(this.__Queue, token);
}
};
var asyn = function(url, data, opt){
opt = opt || {};
//异步请求对象
var __callBack = function(xhr, responseText){
if(opt.token && !messageMgr.isAvailable(opt.token)) return false;
opt.callback && opt.callback(xhr, responseText);
};http://www.huiyi8.com/ppt/
baidu.ajax.request(url, {
method: opt.method || "post",
data: data,
onsuccess: __callBack,
timeout: options.timeout || 600000,
onfailure:function () {
alert("网络传输异常。");
}
});
};
var blogCat = function(){
var __token = null;
var __asynRequest = function(){
var __callBack = function(list){
//渲染列表操作
}
var __data = {};
messageMgr.asyn("/remoteHC.php", __data, {
token: __token,
callback : __callBack
});
};
var __init = function(){
//绑定事件其他操作
__token = messageMgr.Create();
};
var __dispose: function(){
//出栈
messageMgr.Remove(__token);
};
return {
init: __init,
dispose: __dispose
}
}();
最新文章
- iOS开发-- 通过runtime kvc 移除导航栏下方的阴影效果线条
- nodejs httpserver
- 长时间停留在calculating requirements and dependencies 解决方案
- MySQL workbench 中文乱码 显示口口
- CSS3 动画实现 animation 和 transition 比较
- ubuntu 安装mysql-python和 python-ldap,navicate 问题
- HT for Web 3D游戏设计设计--汉诺塔(Towers of Hanoi)
- homework160809207刘兆轩
- CSS - 针对不同浏览器的写法
- nodejs--express开发个人博客(2)
- GDI+ 摘要: 保存图像文件
- Sass与Compress实战:第五章
- 如何在vue里面访问php?
- 作用域链和函数内部this指向问题以及bind、call、apply方法
- Hadoop---Java-API对HDFS的操作
- hibernate5(12)注解映射[4]一对一外键关联
- ip地址后边加个/8(16,24,32)是什么意思
- Asp.Net从相对路径获取绝对路径的方法(不需要httpcontext上下文也可)
- Codeforces 911D. Inversion Counting (数学、思维)
- U3D正播反播动画剪辑
热门文章
- HDU1757-A Simple Math Problem,矩阵快速幂,构造矩阵水过
- bzoj 3786 星系探索 dfs+splay
- sequence(bzoj 1367)
- app后端搜索入门
- 2016 ACM/ICPC 区域赛(北京) E 题 bfs
- Markdown中插入图片技巧收集
- INFO org.apache.hadoop.ipc.RPC: Server at master/192.168.200.128:9000 not available yet, Zzzzz...
- Spring Boot使用MyBatis 3打印SQL的配置
- Eclipse通过Maven构建时出现: Fatal error compiling: tools.jar not found: Fatal error compiling: tools.jar not found: C:\Program Files\Java\jre1.8.0_31\..\lib\tools.jar
- O2O助汪峰成功逆袭,汪峰最终上头条了