если элемент испускается, и вы немедленно распоряжаетесь потоком, который хотите остановить, он будет обработан до его завершения, но больше элементов не будет испущено.
, поэтому, если вы посмотрите этот пример, возможно, вы пойметелучше
observable = Observable.interval(100, TimeUnit.MILLISECONDS)
.map(aLong -> {
System.out.println("1");
return aLong;
})
.map(aLong -> {
observable.dispose();
System.out.println("2");
return aLong;
})
.map(aLong -> {
observable.dispose();
System.out.println("3");
return aLong;
})
.doOnNext(aLong -> System.out.println("4"))
.map(aLong -> {
observable.dispose();
System.out.println("5");
return aLong;
})
.subscribe();
}
В этом потоке будет обработан только первый элемент до конца потока, поэтому даже если первая наша задача - отписаться, мы все равно будем обрабатывать отправленный элемент, поэтому мы отписываемся от источника излучения