Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
554 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 Reply

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...