RxJava 用法(一)

RxJava 用法(一)

一、響應式編程庫的選擇

我先後接觸過 RxJava1.X ,RxJava2.X,Reactor,但是我最後選擇了RxJava2.X。
原因如下:
1)RxJava1.X 雖然有很多公司已經在用了,但是已經很有年代了,而且內部東西太多,好多無用的東西,而且和RxJava2.X兼容度不高。
2)Reactor 這個我接觸比較的時間長些,因爲它是spring 出的,並且比較新,好像和RxJava主要是同一個作者,最爲重要的是 Spring WebFlux 內部用的也是 Reactor,這個是spring推出的比springMVC更優秀的模塊,優勢在於可以完全異步。但是學到最後感覺有點重點於異步IO了,而且比較複雜的和其它編程交互的方式,感覺官網不建議是不建議使用的,而且比較靈活編程交互方式的文檔和案例官網都不太多,感覺沒做好完全迎接大衆的準備。最後隔壁同事在用RxJava2.X 感覺比較香,所以最後選擇了RxJava2.X。

二、理解響應式編程

我覺得這個很重要,理解響應式編程。首先我們需要理解一種開發方式,就是觀察者模式,21種設計模式之一。

簡單介紹一下,A和B兩個,A是被觀察者,B是觀察者,B對A進行觀察,B並不是需要時刻盯着A,而是A如果發生了變化,會主動通知B,B會對應做一些變化。舉個例子,假設A是連載小說,B是讀者,讀者訂閱了連載小說,當小說出現了新的連載的時候,會推送給讀者。讀者不用時刻盯着小說連載,而小說有了新的連載會主動推送給讀者。這就是觀察者模式。而RxJava正是基於觀察者模式開發的。

我們發現
1)有兩個角色:1.被觀察者。2.觀察者。
2)有兩個動作:1.訂閱。2.通知。
我們理解了這個,然後去理解RxJava2.X就很好理解了。

三、編碼

show time ,現在到了編碼理解的時候了。先從簡單的來看下吧,按照上面解說的來。
1. 創建一個被觀察者

Observable<Integer> observable=Observable.create(new ObservableOnSubscribe<Integer>() {
            @Override
            public void subscribe(ObservableEmitter<Integer> emitter) throws Exception {
                emitter.onNext(1);
                emitter.onNext(2);
                emitter.onNext(3);
                emitter.onComplete();
            }
        });

2. 創建觀察者

Observer<Integer> observer = new Observer<Integer>() {

            public void onComplete() {
                System.out.println("On Complete called");
            }

            public void onError(Throwable t) {
                t.printStackTrace();
            }

            public void onNext(Integer value) {
                System.out.println("On Next called " + value +"\n");
            }

            public void onSubscribe(Disposable disposable) {
                System.out.println("On onSubscribe called " + disposable.isDisposed());
            }
        };

3. 訂閱動作

observable.subscribe(observer);

4. 通知動作

emitter.onNext(1);
emitter.onNext(2);
emitter.onNext(3);
emitter.onComplete();

創建好了上面四步,我們的編程模型就建立完了,雖然上面還有很多方法的作用沒講到,但是後面會講到,我們先讓整個代碼跑起來。
![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20200412201631598.png?x-oss-proce
好了,整個RxJava的用法我們基本就會了,只有上面四步,包括後面複雜的話也是這四步走。
我們現在來講講這些方法
1)Observable.create(); 這個是創建一個能被觀察的事件源,裏面調用#onNext()方法發射出事件或元素,組成事件流暴露成個事件源的引用。
2)new Observer(); new了一個觀察者,但是上述的觀察者是個接口,我需要實現四個方法。#onNext()方法就是觀察者收到的通知事件或元素。#onSubscribe()方式是訂閱者訂閱成功時執行。
3)observable.subscribe(observer); 訂閱操作,觀察者訂閱被觀察者。
4)emitter.onNext(1); 通知,通知訂閱者我發送了一個元素 1。emitter.onComplete(); 通知訂閱者我發送了一個完成事件。

總結

RxJava 基礎的編程方式和用法我已經展示完畢了,後續還會有更新。附上github:博主的github鏈接,希望多star下

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章