私は RxJava を使用しており、次の 2 つのことを行う必要があります。
- から放出された最後の要素を取得します
Observable - が呼び出されたかどうかを判断する
onError、vs.onCompleted
lastand (これは実際に必要な動作です) の使用を検討しましたが、最後の要素lastOrDefaultを非表示にすることはできませんでした。onErrorObservable を 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 は「完了前に発行された最後の要素を取得する」というこのユースケースをより適切に満たすことができるはずだと感じています。これを達成する方法についてのアイデアはありますか?