我是ReactiveX的新手。我正在从源代码中学习它。一切都是如此清晰但突然间我得到了这个名为" Consumer"这是一个接口。它被用来代替观察者。 有人能告诉我它到底是做什么的吗?
我关注了几个链接,但他们只是说了一个声明消费者是一个接受单个值的功能接口(回调)。 我想知道它的确切工作。
答案 0 :(得分:10)
Consumer是一个简单的java接口,它接受T类型的变量。 正如你所说它用于回调。
示例:
LambdaObserver
为什么会这样?我们如何使用Consumer而不是Observer?
RxJava只是创建一个Observer,将Consumer传递给它,并在onNext中调用
<强>更新强>
Observable.just(new Object())
.subscribe(
o -> processOnNext(o),
throwable -> processError(throwable),
() -> processCompletion(),
disposable -> processSubscription()
);
是一种由四个功能接口创建的观察者,并将它们用作回调。它主要用于使用java 8 lambda expressions。它看起来像这样:
NaN
答案 1 :(得分:3)
Consumer
消耗订阅时收到的值。它就像Subscriber
一样将发出的数据作为回调传递。
Consumer
是一个简单的接口,它具有泛型类型的回调,需要Observable
接收发出的项目。
请注意,如果您只有消费者,您不会发现错误,并且您可能会通过调试遇到问题。
您可以使用另一个Consumer作为接收Throwable的第二个参数来解决这个问题。
Flowable.just("Hello world")
.subscribe(
emittedData -> System.out.println(s),
error -> System.out.println("Error occured: "+ error)
);
答案 2 :(得分:0)
在我的拙见中,消费者是反向/双向流。
例如,您的数据源以“热”可流动(HF)的形式发出从“ X”执行的,与时间相关的复杂操作的“ Y”。
假设参数X是通过“热”可观测(HO)发出的,那么您的数据源可以是订阅“ HO”并通过HF发出复杂运算结果的使用者。
在这种情况下,您具有双向流,并且使用了使用者将通过HO所提供的日期推送到数据源中。
我不确定我的答案是否正确... rx有点复杂:B