RX sub observable - 只执行一次

时间:2016-09-06 18:56:18

标签: android rx-java observable

通常我使用

Observable observable = someObservable.replay().refCount();

创建一个只能执行一次的observable。如果我多次订阅observable,这样可以正常工作:

observable.observeOn(Schedulers.io())
    .subscribeOn(AndroidSchedulers.mainThread())
    .subscribe(...);

observable.observeOn(Schedulers.io())
    .subscribeOn(AndroidSchedulers.mainThread())
    .subscribe(...);

observable只执行一次 - 完美,就像我想要的那样。如果我现在这样做:

Observable obs1 = observable.map(...); // call some operators
Observable obs2 = observable.map(...); // call some operators

obs1.observeOn(Schedulers.io())
    .subscribeOn(AndroidSchedulers.mainThread())
    .subscribe(...);

obs2.observeOn(Schedulers.io())
    .subscribeOn(AndroidSchedulers.mainThread())
    .subscribe(...);

然后observable执行两次。我怎样才能确定,这不会发生?

1 个答案:

答案 0 :(得分:4)

我认为您想要的是添加.take(1)运算符。这样一旦从observable中读取了某些东西,它就会调用onComplete。