本文爲原創,轉載請註明出處: cnzt 文章:cnzt-phtml
http://www.cnblogs.com/zt-blog/p/7809176.html react
RxJS在Angular中是一個很重要的東西,此篇爲RxJS的學習筆記。數組
RxJS(Reactive extension js)是一個庫,它用Observable序列來處理異步的、基於事件的程序。它提供了一個核心類型Observable(Observer, Schedulers, Subjects) 和一組數組操做符(map, filter, reduce, every, etc)oprators,來容許將異步的事件做爲集合處理。併發
解決異步的集合核心概念:異步
Observable Observer Subscription Oprators Subject Schedulers(控制併發)函數
(一)Observable, Observer , Subscription 學習
下圖的create至關於Producer, subscribe至關於consumer。 多個subscribe時,每次subscribe至關於從新單獨call了一次function(observer){...},每次互不影響,由於function和Observable都是lazy computations的,不call/subscribe就不會執行的。spa
Observable既能夠是同步的,也能夠是異步的。3d
Observable能夠返回多個值: observer.next(1); observer.next(2); ...... ***這點在function中是作不到的!***server
Observable的四個方面:
subscribe調用時傳遞的參數就是Observer,Observer通常包含三個callback:next,error 和 complete。
傳遞error給observer的方式:
dispose: Subscription
(二)Subject
Subject是一種特殊的Observable。區別在於:Observable是單播(每個被訂閱的Observer在其Observable有獨立的執行環境),Subject是多播(多個Observer共同分享一個execution)。
***每一個Subject都是一個Observable,每一個Subject也是一個Observer。
最重要特性就是可多播。
(三)Operator
Operator是一個純函數,生成一個新的Observable而不改變原有的Observable。 對新Observable的訂閱也會訂閱到原Observable上面(操做符訂閱鏈)。
操做符分爲:實例操做符 和 靜態操做符。 實例操做符做用在Observable實例上,靜態操做符做用域Observable這個對象上。
操做符全部類型列表: http://reactivex.io/rxjs/manual/overview.html#categories-of-operators