Существует два события - event1
и event2
, которые могут вызвать getA()
, эти два события могут произойти одновременно и вызвать getA
.Я не хочу звонить getA
несколько раз, пока это не будет сделано.Я использую isDisposed()
, чтобы проверить, все еще ли он активен, и вызываю dispose()
явно в doFinally
и устанавливаю fetchADisposable как ноль.Есть ли лучший способ сделать это?
Одноразовые fetchADisposable;
public void getA() {
fetchA() //returns Observable
.doFinally(new Action() {
fetchADisposable.dispose();
fetchADisposable = null;
}).subscribe() {
@Override
public void onSubscribe (Disposable d){
fetchADisposable = d;
}
@Override
public void onNext () {
}
@Override
public void onError (Throwable e){
}
@Override
public void onComplete () {
}
}
}
public void event1() {
if (fetchADisposable == null || fetchADisposable.isDisposed()) {
getA();
}
}
public void event2() {
if (fetchADisposable == null || fetchADisposable.isDisposed()) {
getA();
}
}