我是ReactiveX的新手。我從源代碼中學習它。一切都很清楚,但突然之間我得到了一個名爲「消費者」的詞,這是一個界面。它被用來代替Observer。 有人可以讓我知道它到底做了什麼嗎?使用Reactivex的消費者接口
我跟隨了幾個鏈接,但他們只是說了一條語句Consumer是一個接受單個值的函數接口(回調函數)。 我想知道它的確切工作。
- 這是什麼?
- 我們爲什麼需要它?
- 如何使用它?
- 它代替觀察者嗎?如果是,如何和爲什麼?
我是ReactiveX的新手。我從源代碼中學習它。一切都很清楚,但突然之間我得到了一個名爲「消費者」的詞,這是一個界面。它被用來代替Observer。 有人可以讓我知道它到底做了什麼嗎?使用Reactivex的消費者接口
我跟隨了幾個鏈接,但他們只是說了一條語句Consumer是一個接受單個值的函數接口(回調函數)。 我想知道它的確切工作。
Consumer是一個簡單的java接口,接受類型T的變量。 ,正如您所說,它用於回調。
例子:
import io.reactivex.functions.Consumer;
Flowable.just("Hello world")
.subscribe(new Consumer<String>() {
@Override public void accept(String s) {
System.out.println(s);
}
});
爲什麼它的工作?我們如何使用消費者而不是觀察者?
RxJava簡單地創建了一個觀察者,通過消費者給它一個它被稱爲onNext
更新
LambdaObserver
是一種觀察者,它是由四個功能接口創建的,並將它們用作回調函數。這主要是使用java 8 lambda expressions。它看起來像這樣:
Observable.just(new Object())
.subscribe(
o -> processOnNext(o),
throwable -> processError(throwable),
() -> processCompletion(),
disposable -> processSubscription()
);
這個答案看起來不錯,但你可以在這裏更多地啓發 –
一個Consumer
消耗您訂閱時收到的值。這就像一個Subscriber
誰傳遞發射的數據作爲回調。
Consumer
是一個簡單的接口,它具有對通用類型的回調,並且需要接收Observable
發出的項目。
請注意,如果您只有消費者,您不會發現錯誤,並且可能通過調試出現問題。
您可以通過使用另一個Consumer作爲接收Throwable的第二個參數來解決此問題。
Flowable.just("Hello world")
.subscribe(
emittedData -> System.out.println(s),
error -> System.out.println("Error occured: "+ error)
);
爲什麼我們需要它? –
相同。我有這樣的訂閱(消費者)訂閱。不明白嗎? –