关于Rxjava的一些概念:观察者模式和事件

时间:2016-05-28 02:37:36

标签: java rx-java

我读了一些页面,它定义了Rxjava是一个库,用于使用Java VM的可观察序列来编写异步和基于事件的程序。它基于观察者模式。

Observable observable = Observable.create(new Observable.OnSubscribe<String>() {
@Override
public void call(Subscriber<? super String> subscriber) {
    subscriber.onNext("Hello");
    subscriber.onNext("Hi");
    subscriber.onNext("Aloha");
    subscriber.onCompleted();
}

});

在我看来,观察者模式就像按钮和按钮的监听器一样。如果单击按钮,该按钮将创建一个事件来通知监听器运行。

问题是:

  1. 是关于按钮和听众的概念的未定吗?
  2. 我发现上面的代码文章说它会立即运行 ,我可以不立即通知观察员。在这个例子中, 我想发送我输入的任何字符串而不是这三个字符串。

1 个答案:

答案 0 :(得分:2)

看看PublishSubject。它既是一个可以订阅的可观察源,也可以发送它。就UI按钮而言,您可以这样做:

final PublishSubject<String> subject = PublishSubject.create();

final Observable<String> o = 
    subject.doOnNext(...)
           .doOnError(...)
           .subscribe();
按钮监听器中的

public void onEvent(Event event) {
    subject.onNext(event.name());
}