reactivex java创建一个自定义观察者,在将来的某个随机时间发出事件

时间:2016-08-26 23:58:13

标签: java rx-java reactivex

我试图弄清楚如何在未来的某个时间创建异步观察者和trigger/emit事件而不重建observable和订阅者列表。

寻找类似的东西:

MyAsyncObservable o = new MyAsyncObservable();

o.subscribe(s);
o.subscribe(s2);
while(scanner.hasNext()){
  o.emit(scanner.nextInt()); // emit T to subscribers.
}

MyAsyncObservable可能只是Observable.fromAsync(emitter,buffermode)

而不是

while(scanner.hasNext(){
  Observable<Integer> o = Observable.just(scanner.nextInt());
  o.subscribe(s);
  o.subscribe(s2);
}

1 个答案:

答案 0 :(得分:0)

如果您的观察结果很冷,只需使用.delay();见f.e.这样:

Observable.just("Hello!").delay(10, TimeUnit.SECONDS).subscribe(System.out::println);

如果它是一个热点可观察的,只需添加一个缓冲区(假设您预计10秒钟内不会超过10次排放:

Observable
  .just("Hello!")
  .onBackpressureBuffer(10)
  .delay(10, TimeUnit.SECONDS)
  .subscribe(System.out::println);

编辑:哦,我明白了 - 你想要一个Subject - PublishSubjectBehaviorSubject。创建它们并通过通常的onNext / onComplete / onError为它们提供数据。