• 解决多次异步请求紊乱问题


    加入目前的需求这样的: 
          左边的菜单链接,点击后通过异步请求返回其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
             }
    }();

  • 相关阅读:
    [zz] 从VMM中终止GUEST OS中运行进程
    [zz]Linux流量监控工具 – iftop (最全面的iftop教程)
    [zz]Ubuntu终端下Nethogs网络流量监控工具
    AtomicBoolean运用
    JDK中的URLConnection参数详解
    java读取文本文件数据
    tomcat时区设置
    java的upload
    java复习(set 、list、map)
    NIO学习笔记1
  • 原文地址:https://www.cnblogs.com/xkzy/p/3870322.html
Copyright © 2020-2023  润新知