RxJava2 delaySubscription现在执行

时间:2018-09-26 11:15:59

标签: delay rx-java2

我有一个延迟手术:

mySingle.delaySubscription(60, TimeUnit.SECONDS).subscribe();

如果由于某种原因在安排了这样的延迟后我现在想执行操作,该怎么办?

我看到的是,我可以从Disposable中获得subscribe(),并且,如果我现在需要执行一项操作,请立即处置它并再次订阅。但是在我看来,这是很不礼貌的方式。

有没有更优雅的方式做到这一点?

1 个答案:

答案 0 :(得分:0)

您可以合并到SingleSubject中,这样您就可以立即对某个值做出反应,并且仍然可以订阅主要来源。

Single<T> mSingle = ...

SingleSubject<T> immediately = SingleSubject.create();

Flowable<T> result = mSingle
    .delaySubscription(60, TimeUnit.SECONDS)
    .mergeWith(immediately);

result.subscribe();

immediately.onSuccess(...);