加入目前的需求這樣的:
左邊的菜單連接,點擊後經過異步請求返回其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
}
}();
php