在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(官方)
有什麼討論的內容,能夠加我公衆號: