私は RxJava を使用しており、次の 2 つのことを行う必要があります。
- から放出された最後の要素を取得します
Observable
- が呼び出されたかどうかを判断する
onError
、vs.onCompleted
last
and (これは実際に必要な動作です) の使用を検討しましたが、最後の要素lastOrDefault
を非表示にすることはできませんでした。onError
Observable を 2 回使用しても問題ありません。1 回はlast
値を取得するため、もう 1 回は完了ステータスを取得するためですが、これまでのところ、独自の を作成することによってのみこれを達成できましたObserver
。
public class CacheLastObserver<T> implements Observer<T> {
private final AtomicReference<T> lastMessageReceived = new AtomicReference<>();
private final AtomicReference<Throwable> error = new AtomicReference<>();
@Override
public void onCompleted() {
// Do nothing
}
@Override
public void onError(Throwable e) {
error.set(e);
}
@Override
public void onNext(T message) {
lastMessageReceived.set(message);
}
public Optional<T> getLastMessageReceived() {
return Optional.ofNullable(lastMessageReceived.get());
}
public Optional<Throwable> getError() {
return Optional.ofNullable(error.get());
}
}
私は自分で を作成することに問題はありませんObserver
が、Rx は「完了前に発行された最後の要素を取得する」というこのユースケースをより適切に満たすことができるはずだと感じています。これを達成する方法についてのアイデアはありますか?