JavaScript非同步編程(二) 分布式事件

來源:互聯網
上載者:User

標籤:jquer   node   介面   length   sub   改變   ret   自訂   處理   

分布式事件

發布/訂閱模式分發事件

 

  ?PubSub模式

    瀏覽器允許向DOM元素附加事件處理器;

   

    Node的EventEmitter對象

    emitter.on(‘evacuate’, function() {…});

    emitter.emit(‘evacuate’);

    emit意為觸發,負責調用給定事件類型的所有處理器

 

    建立自己的PubSub

    PubSub.on = function(eventType, handler) {

        if(!(eventType in this.handlers)) {

             this.handlers[eventType] = handler;

             return this;

       }

   };

 

    PubSub.emit = function(eventType) {

          var handlerArgs = Array.prototype.slice.call(arguments, 1);

          for(var i =0; i < this.handlers[eventType].length; i++) {

               this.handlers[eventType][i].apply(this, handlerArgs);

          }

          return this;

    };

 

    jQuery的名稱空間化事件

    如果同時綁定了名稱為click.tbb和hover.tbb兩個事件,簡單地調用unbind(‘.tbb’)就可以同時解除綁定它們。

    jQuery還支援用空格隔開多個事件來同時綁定或觸發多種事件類型。

 

    同步性

    PubSub模式是一項處理非同步事件的重要技術,但內在跟非同步沒有任何關係。

 

    PubSub模式簡化了事件的命名、分發和堆積。

 

?事件化模型

  只要對象帶有PubSub介面,就可以稱之為事件化對象。

  特殊情況出現在用於儲存資料的對象因內容變化而發布事件是,這裡用於儲存資料的對象又稱作模型。

  老式的JavaScript依靠輸入事件的處理器直接改變DOM。

  新式的JavaScript先改變模型,接著由模型觸發事件而導致DOM的更新。

 

  jQuery自訂事件

  在jQuery中,可以使用trigger方法基於任意DOM元素觸發任何想要的事件,

  冒泡技術:只要某個DOM元素觸發了某個事件,其父元素就會接著觸發這個事件,接著是父元素的父元素,以此類推,一直上溯到根項目。

               只有在冒泡過程中呼叫事件的stopPropagation方法才會停止。

 

PubSub的缺陷在於不適用於一次性事件,一次性事件要求對非同步函數執行的一次性任務的兩種結果(任務成功或失敗)做不同處理。例如,Ajax請求。而用於解決一次性事件問題的工具叫做Promise。

JavaScript非同步編程(二) 分布式事件

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.