RxJava基礎知識點總結

2021-08-15 07:55:18 字數 2018 閱讀 1607

場景1:被觀察者、觀察者和訂閱分開寫

/**

* 先建立乙個上游observable

* 角色:被觀察者

*/observableobservable = observable.create(new observableonsubscribe()

});

/**

* 建立乙個下游observer

* 角色:觀察者

*/observerobserver = new observer()

@override

public

void

onnext(@nonnull string s)

@override

public

void

onerror(@nonnull throwable e)

@override

public

void

oncomplete()

};

//建立連線(上游訂閱下游)

observable.subscribe(observer);

場景2:被觀察者、觀察者和訂閱一起寫

observable.create(new observableonsubscribe() 

}).subscribe(new observer()

@override

public

void

onnext(@nonnull string s)

@override

public

void

onerror(@nonnull throwable e)

@override

public

void

oncomplete()

});}

observableemitter,顧名思義被觀察者的發射器。聽著有點滑稽,實際上它就是乙個發射器,用於從上游發射要傳送的資料或者控制資訊到下游。

observableemitter的源**如下所示。

public

inte***ce

observableemitter

extends

emitter

observableemitter接受泛型資料,並且繼承了乙個更加底層的介面emitter,索性再看看emitter類的原始碼。

public

inte***ce emitter

下面簡要介紹下重點的幾個方法。

1) onnext(@nonnull t value)方法

這個方法就是最關鍵的方法了,當被觀察者和觀察者建立了連線。那麼,正常情況下只要沒有發生錯誤或者連線被廢棄的話。上游(被觀察者)就會通過這個方法往下游(觀察者)傳遞訊息,下游 會在onnext方法中接受到訊息,進行相應的處理。

2)onerror(@nonnull throwable error)方法

這個方法一般是在發生錯誤時,上游會將錯誤資訊封裝在throwable中拋給下游,下游會在onerror方法中接受到錯誤資訊進行相應的錯誤處理。

這裡需要格外注意的是:當emitter丟擲錯誤時,連線將中斷,後面再進行onnext(@nonnull t value)也不會得到任何回應了。另外,onerror(@nonnull throwable error)方法也只會呼叫一次,寫100個onerror(@nonnull throwable error)也只有第乙個會呼叫。後面的不但不會呼叫,還會出錯。

3)oncomplete()方法

改方法呼叫後,下游會在oncomplete()方法中回應,上下游的連線即可中斷。上游再呼叫onnext(@nonnull t value)方法也不會得到任何回應了。oncomplete()方法也是只呼叫一次,而且跟onerror是互斥的,他倆都可以即可中斷連線。

Java基礎知識點總結

一 方法的過載 方法的過載與返回值型別無關,只需滿足兩個條件即可 一是方法名相同,二是引數個數或型別不同。二 陣列初始化 動態初始化 在定義陣列時,只指定陣列長度,由系統自動為元素賦值的方式。靜態初始化 在定義陣列時為每個元素賦值。有兩種方式 陣列靜態初始化的方式有兩種 1.型別 陣列名 new 型...

CSS基礎知識點總結

一 css的簡介 1 什麼是css 層疊樣式表,css是對html進行樣式修飾語言 層疊 就是層層覆蓋疊加,如果不同的css樣式對同一html標籤進行修飾,樣式有衝突的部分應用優先順序高的,不衝突的部分共同作用 樣式表 就是css屬性樣式的集合 2 css的作用 1 修飾html的 使其html樣式...

jquery基礎知識點總結

方式一 function 方式二 document ready function 注意 使用jquery獲取的物件叫做jquery物件,只能使用jquery的方法,使用原生js獲取的物件叫做dom物件,只能使用原生方法,兩者不能混用 因此可以讓jquery物件跟dom物件相互轉換 dom物件轉換為j...