RxJS

事件總線

EventBus,消息或事件流動的管道,集中式事件處理機制:負責訂閱者、事件等信息的存儲,同時處理事件的流動和分發。html

  • 基於觀察者模式思想,摒棄觀察者模式須要顯式註冊回調的缺點
  • 訂閱者和發佈者解耦
  • 簡化組件間通訊

至於觀察者模式,發佈訂閱模式有兩種方式:android

  • 簡單方式:Publisher維護一個訂閱者列表,當狀態改變時循環遍歷列表通知訂閱者
  • 委託方式:Publisher定義事件委託,Subscriber實現委託

推薦委託方式。編程

響應式編程

Reactive Programming(RP),基於異步數據流交互的編程範式,本質上是對數據流或某種變化所做出的反應。數組

  • Stream:按時間排序的(即將發生的)事件的序列,響應式編程的核心

事件驅動:用某個函數訂閱事件流,每當有一個新的事件時,流將激活這個函數,以使代碼對事件做出響應。異步

  • 觀察值:某個函數
  • 被觀察者:事件流

與數組相比,數組是在空間上的值的序列,事件流是隨時間的值的序列。函數

Promise對象能夠看做是一個只有一個返回值的被觀察者。性能

// req stream
var requestStream = Rx.Observable.just(requestUrl);
// ret stream
var responseStream = requestStream
  .flatMap(function(requestUrl) {
    return Rx.Observable.fromPromise(jQuery.getJSON(requestUrl));
});
// 訂閱
responseStream.subscribe(function(response) {
  // render `response` to the DOM however you wish
});

具體講解請參見:http://www.javashuo.com/article/p-uwxjvuww-dc.html spa

RxJS

  • 基於響應式編程實現的JavaScript高性能庫,包含豐富的數據變換方法的函數庫
  • 提供管理複雜異步應用很是優秀的方案
相關文章
相關標籤/搜索