【发布时间】:2016-10-17 21:25:03
【问题描述】:
有我的方法:
public void openWorkshift(WorkshiftSettings workshiftSettings, Subscriber<WorkshiftSettings> subscriber) {
api.openWorkshift(workshiftSettings)
.compose(RxOperatorsHelpers.additionalStacktrace())
.doOnSubscribe(() -> actionsSystem.registerAction(...).await()) // <-
.doOnUnsubscribe(() -> actionsSystem.unregisterAction(...).await()); // <-
.subscribeOn(ioScheduler)
.observeOn(uiScheduler)
.doOnError(this::handleError)
.subscribe(subscriber);
}
ActionsSystem.registerAction(...)/ActionsSystem.unregisterActions(...) 看起来像这样:
public Completable registerAction(OperatorAction action) {
return Completable.fromAction(() -> actions.add(action));
}
public Completable unregisterAction(OperatorAction action) {
return Completable.fromAction(() -> actions.remove(action));
}
如您所见,我使用.await() 在源Observable 的流中执行Completable。感觉像是错误的解决方案。 怎样才能做得更优雅?
【问题讨论】:
标签: java rx-java rx-android