事件總線
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高性能庫,包含豐富的數據變換方法的函數庫
- 提供管理複雜異步應用很是優秀的方案