日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > web前端 > jscript > JavaScript 異步方法隊列鏈

JavaScript 異步方法隊列鏈

來源:程序員人生   發布時間:2014-06-20 16:00:08 閱讀次數:3399次

在javascript中,方法的鏈式調用很流行,使用jQuery的朋友對此一定深有體會。在《javascript設計模式》中對這種方法作了比較詳細的描述,實現方法的鏈式調用,只須讓在原型中定義的方法都返回調用這些方法的實例對象的引用即可,看看書中的這段代碼:

(function() {  function _$(els) {    this.elements = [];    for (var i = 0, len = els.length; i < len; ++i) {      var element = els[i];      if (typeof element == 'string') {        element = document.getElementById(element);      }      this.elements.push(element);}  };  _$.prototype = {    each: function(fn) {      for ( var i = 0, len = this.elements.length; i < len; ++i ) {        fn.call(this, this.elements[i]);      }      return this;    },    setStyle: function(prop, val) {      this.each(function(el) {        el.style[prop] = val;      });      return this;    },    show: function() {      var that = this;      this.each(function(el) {        that.setStyle('display', 'block');      });      return this;    },    addEvent: function(type, fn) {      var add = function(el) {        if (window.addEventListener) {          el.addEventListener(type, fn, false);        }        else if (window.attachEvent) {          el.attachEvent('on'+type, fn);        }      };      this.each(function(el) {        add(el);      });      return this;    }  };  window.$ = function() {    return new _$(arguments);  };})();

可以看到,每個方法都以”return this”結束,這就會將調用方法的對象傳遞給鏈上的下一個方法。但是,如果我們要操作的數據是通過異步請求來獲得的,如何保持方法的鏈式調用呢?Dustin Diaz為我們提供了一種方法來保證方法的鏈式調用,他也是《javascript設計模式》一書的作者之一。

他首先構建了一個Queue對象,即:

function Queue() {  // store your callbacks  this._methods = [];  // keep a reference to your response  this._response = null;  // all queues start off unflushed  this._flushed = false;}Queue.prototype = {  // adds callbacks to your queue  add: function(fn) {    // if the queue had been flushed, return immediately    if (this._flushed) {      fn(this._response);    // otherwise push it on the queue    } else {      this._methods.push(fn);    }  },  flush: function(resp) {    // note: flush only ever happens once    if (this._flushed) {      return;    }    // store your response for subsequent calls after flush()    this._response = resp;    // mark that it's been flushed    this._flushed = true;    // shift 'em out and call 'em back    while (this._methods[0]) {      this._methods.shift()(resp);    }  }};

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 在线看国产 | 黄网免费| 欧美一级欧美一级在线播放 | 最新日韩精品 | 天天干女人 | 日本一区视频在线 | 日韩在线 中文字幕 | 日韩综合在线 | 免费成人高清在线视频 | 91精品国产乱码久久久久久久久 | 亚洲午夜免费视频 | 婷婷国产成人精品视频 | 欧美日韩a| 成人免费视频在线观看 | 神马久久一区二区 | 亚洲国产一区二区a毛片 | 日日夜夜狠狠操 | 国产精品免费一区二区三区 | 日韩大片 | 91久操| 中文字幕在线电影 | 日韩国产欧美一区二区三区 | 日韩不卡在线视频 | av网站在线播放 | 麻豆国产一区二区三区四区 | 亚洲se主站| 国产精品久久久久久久久久久久 | 日日操夜夜爽 | 中文字幕一区2区 | 亚洲精选久久 | 青青草一区二区 | 日韩伦理一区二区 | 色综合社区 | 亚州久久 | 国产理论在线观看 | 麻豆精品一区 | 黄色网址免费 | 免费在线观看一区 | 欧美日韩免费一区二区三区 | 国产精品片一区二区三区 | 亚洲综合精品 |