Предположим, у меня есть Observable, и он будет излучать не более 1 элемента.
Я бы хотел сделать что-то до и после излучения элемента.
Как мне поступить с операторами для создания нового Observable?
Скажите, что я хочу отследить мою наблюдаемую в следующей последовательности:
- отметка времени начала журнала (span.start ())
- сделать реальный бизнес, чтобы испустить элемент.
- отметка времени окончания журнала (span.finish ())
для "после", может быть, я могу использовать doOnComplete и doOnError
но я понятия не имею, как это сделать "до"
Заранее спасибо!
Edit:
Вот 1 способ, которым я могу придумать, не уверен, что это лучший способ, или есть потенциальные проблемы:
Future<String> f = CompletableFuture.supplyAsync(() -> {
return "Do Biz";
});
Observable<String> original = Observable.from(f).doOnCompleted(() -> {
System.out.println("inner after");
});
Observable<String> decorated = Observable.defer(() -> {
System.out.println("Before");
return original;
}).doOnCompleted(() -> {
System.out.println("outer after");
});
decorated.subscribe(System.out::println);
Спасибо
Leon