I have following code:
Observable
.just(8, 9, 10)
.doOnNext(i -> System.out.println("A: " + i))
.filter(i -> {
return i % 3 > 0;
})
.doOnNext(i -> System.out.println("B: " + i))
.map(i -> {
Thread.sleep(3000);
return "#" + i * 10;
})
.doOnNext(s -> System.out.println("C: " + s))
.filter(s -> s.length() < 4)
.subscribe(s -> System.out.println("D: " + s));
Output is:
A: 8
B: 8
C: #80
D: #80
A: 9
A: 10
B: 10
C: #100
Output suggests that first 8 goes through all the observable operators, then 9 and then 10. Even if processing of 8 takes time in map operator, 9 is not emitted to filter operator. Why is it so? Seems I haven't understood correctly how RxJava works.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…