一句話概括就是用異步資料流來程式設計
從某種程度上講,一個點選事件就是一個異步事件流,我們可以注冊監聽然後再做一些其他的事情。正是這樣我們就應該有一個工具包來建立,組合,過濾這些流。一個流或者多個流可以作為另一個流的輸入,可以合并這兩個流,并且能夠過濾這些流得到你想要的流,能夠把流推送到另一個新的流。這些就是響應式程式設計要做的事情
監聽一個流我們稱之為“訂閱”(Subscription),我們定義的功能是“觀察者”(Observer),流就是我們的“可觀察”對象(Observable ),對流的操作就是Operators
它是聲明式的、可組合的,以及不可變的,這避免了回調地獄,讓你的代碼更加簡潔、可複用以及子產品化
引用官方的一句話來說明RxJS是什麼
RxJS就是響應式程式設計的一個變種
RxJS 是一個庫,它通過使用 observable 序列來編寫異步和基于事件的程式。
這裡面主要說明了兩點:1、可觀察的序列,2、解決異步程式設計
可觀察的序列我們可以想想成可觀察的資料流。流的引申義是物質在庫與庫之間的轉移運作。那麼資料流則是資料随時間從輸入到輸出中間所經曆的一系列的過程。比如:在web中使用者做了一次點選,然後頁面渲染出資料這個過程應該是清晰明了不被污染的。
可以看一個官方的例子:
在一秒鐘内隻能執行一次的代碼實作
再看RxJS
相比之下rxjs實作的部分代碼更加已讀更加幹淨更加優雅。你可以很清晰的看到值的轉換過程。這也是RxJS核心的一部分
一個 observable 就是一個伴随着時間流動的資料集合。
寫過js的都知道js是動态類型的語言,他天生異步,非常的靈活。但這也是他的缺點,多變不好控制。回掉能讓你做很多事情同樣實作複雜的邏輯時可讀性會變得很差。後面有了promise,但promise的可控性并不好。RxJS是結合了 <code>觀察者模式</code>、<code>疊代器模式</code> 和<code>使用集合的函數式程式設計</code>,以滿足以一種理想方式來管理事件序列所需要的一切
RxJS它在處理任何類型的異步資料上都很有用,無論是擷取資料、通過 WebSockets 通信或從多個源頭監聽外部事件,還是動畫。
你使用 Observable 和操作符聲明式地表示你想要的資料,然後在一個單獨的<code>.subscribe()</code>裡處理業務邏輯,避免代碼上的污染
Rx *庫系列可廣泛用于多種語言和平台(.NET,Java,Scala,Clojure, JavaScript,Ruby,Python,C ++,Objective-C / Cocoa,Groovy等
RxJS可以跟很多流行架構(比如 React,Angular 和 Vue)一起工作
其實 RX 最早在接近十年以前(2009)被實作,從 Conal Elliott 和 Paul Hudak 二 十年以前(1997)的想法中被提出,這個想法描述的是函數式響應式動畫。是以不用說,可以完全放心使用它是經過考驗的。
這裡對RX的介紹隻是冰山一角,更多的資料參考[官方文檔