Ниже приведен мой фрагмент кода.
Я знаю, что вы не должны блокировать cachedFlowable
, как это, но это всего лишь пример.
Он застрял на blockingGet
line.
Если я заменим singleOrError
на singleElement
, код все равно застрянет. Если я заменю singleOrError
на firstElement
, код больше не будет зависать.
Может кто-нибудь объяснить мне, почему это так?
public static void main(String[] args) {
final Flowable<Integer> cachedFlowable = Flowable.just(1).cache();
cachedFlowable
.doOnNext(i -> {
System.out.println("doOnNext " + i);
final Integer j = cachedFlowable.singleOrError().blockingGet();
System.out.println("after blockingGet " + j);
})
.blockingSubscribe();
}