he is coding

RxJava之concatArray操作符

| Comments

concatArray的作用是连接多个「被订阅者」对象,并让他们挨个儿发射数据

e.g.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Flowable<Integer> just1 = Flowable.create(e -> {
            
            for (int i = 0; i < 5; i++) {
                e.onNext(i);
            }
            e.onComplete();
            
        }, BackpressureStrategy.LATEST);

Flowable<Integer> just2 = Flowable.create(e -> {

            for (int i = 10; i < 15; i++) {
                e.onNext(i);
            }
            e.onComplete();

        }, BackpressureStrategy.LATEST);

Flowable.concatArray(just1, just2)
         .subscribe(integer -> 
            log("onNext = " + integer)
         );

log打印如下

onNext = 0
onNext = 1
onNext = 2
onNext = 3
onNext = 4
onNext = 10
onNext = 11
onNext = 12
onNext = 13
onNext = 14

说明在等待just1发射完数据后,just2才开始发射数据,它们是有序的

使用场景

  • 通常在项目中,进入一个页面时,为了页面的尽快展示,会先取本地缓存更新ui,然后拉接口

这段逻辑可以用RxJava这样表达

1
2
3
4
Flowable.concatArray(本地缓存, 接口)
         .subscribe(data -> 
            //更新ui
         );

Comments