RxJava 學習筆記<一>

在Java的前面加上了Rx並非一種新的語言,而是在用 java 實現的 reactive extensions,固然還有不少其餘語言的實現,如 rxNet,RxJs,Rxscala......ReactiveX是利用可觀察序列編寫異步事件和基於事件的程序的庫。html

它擴展了觀察者模式以支持數據序列和/或事件序列,並添加了操做符,這些操做符容許您以聲明方式組合序列,同時抽象出對低級別線程、同步、線程安全、併發數據結構和非阻塞I/O等問題的關注。java

在可觀察模型容許您使用像操做數組或者集合的簡單、可操做的操做來處理異步事件流。它使您從回調的網絡中解脫出來,從而使代碼可讀性更強,並且更不容易出錯。react

ReactiveX提供了一個操做符集合,這些操做符能夠過濾、選擇、轉換、組合和合成觀測值。這能夠有效地執行和組合。而後咱們看一下在Java上的實現android

而後咱們先寫個demo看看,加入依賴,我這裏用了低版本的 1.3.5,不妨礙演示git

讓咱們先建立一個Observable:github

而後建立一個 Subscriber 來消費這個數據:數組

而後咱們把這二者組合起來:安全

當訂閱完成時,myObservable調用 subscriber 的next()和onComplete()方法。所以,mySubscriber輸出「hello,world!」,而後終止。網絡

而後咱們簡化一下代碼,RxJava具備多個內置的建立 Observable 方法來實現經常使用任務。在本例中,Observable.just() 發出一個 item,而後完成,下面的代碼和上面相似。數據結構

若是咱們並不關心onCompleted()和onError(),所以咱們可使用一個簡單的類來定義在onNext()期間應該作什麼:

如今,讓咱們把方法調用連接起來,去掉這些變量:

這裏咱們可使用Java 8 lambdas,變的更加簡潔:

 

未完待續!!

代碼:https://github.com/woshiyexinjie/rxjava-leaner.git

參考:

http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0430/2815.html(中文)

http://reactivex.io/tutorials.html(官方)

有什麼討論的內容,能夠加我公衆號:

相關文章
相關標籤/搜索