我有一个延迟手术:
mySingle.delaySubscription(60, TimeUnit.SECONDS).subscribe();
如果由于某种原因在安排了这样的延迟后我现在想执行操作,该怎么办?
我看到的是,我可以从Disposable
中获得subscribe()
,并且,如果我现在需要执行一项操作,请立即处置它并再次订阅。但是在我看来,这是很不礼貌的方式。
有没有更优雅的方式做到这一点?
答案 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(...);