Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
590 views
in Technique[技术] by (71.8m points)

rx java - Time based invocation of RxJava operators on events

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)
等待大神答复

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...