通常我使用
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
执行两次。我怎样才能确定,这不会发生?
答案 0 :(得分:4)
我认为您想要的是添加.take(1)
运算符。这样一旦从observable中读取了某些东西,它就会调用onComplete。