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就不會執行的。
observable既可以是同步的,也可以是非同步的。
observable可以返回多個值: observer.next(1); observer.next(2); ...... ***這點在function中是做不到的!***
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這個物件上。
操作符所有型別列表:
rxjs學習筆記
zip 拉鍊式組合 合併多個非同步操作,當非同步資料全部獲取後,吐出陣列,並一一對應 concat 操作拼接,將多個非同步操作內容合併,當第乙個非同步資料subscribe後 會將結果一起傳遞給下乙個非同步操作,以此類推 merge 也是合併操作,單工作方式是先到先得,不區分位置,只要有資料就會推給...
Rxjs學習筆記四
使用filter產生的observable物件,產生資料的時機和上游一致,當上游產生資料的時候,只要這個資料滿足判斷條件,就會立刻被同步傳給下游 first可有沒有判定函式引數,當不給任何判定函式的時候,就相當於找上游observable吐出的第乙個資料 first的第二個引數就是乙個結果選擇引數,...
RxJS 學習之旅 實現簡易RxJS
本片文章主要通過實現rxjs一些簡單操作符,來進一步了解rxjs 本系列文章 你應該了解的函式實現與組合應用 初識rxjs與搭建倉庫 rxjs基礎概念與使用 操作符篇 簡易實現observable 本篇文章可以學到什麼?深入了解observablejs 基礎知識 類 原型 observable 即r...