Rxjava操作符3:merge

说明:

merge 将两个及以上的可观察者,进行并行的发射

You can combine items emitted by multiple ObservableSources so that they appear as a single ObservableSource

方法预览:

//接收一个可观察者
public static <T> Observable<T> merge(ObservableSource<? extends ObservableSource<? extends T>> sources)
//接收两个可观察者
public static <T> Observable<T> merge(ObservableSource<? extends T> source1, ObservableSource<? extends T> source2)
//接收三个可观察者
public static <T> Observable<T> merge(ObservableSource<? extends T> source1, ObservableSource<? extends T> source2, ObservableSource<? extends T> source3)
//接收四个可观察者
public static <T> Observable<T> merge(ObservableSource<? extends T> source1, ObservableSource<? extends T> source2,ObservableSource<? extends T> source3, ObservableSource<? extends T> source4)
//接收一个集合,如arrylist
public static <T> Observable<T> merge(Iterable<? extends ObservableSource<? extends T>> sources)

从重载的方法可以看出,concat可以接收1到4个可观察者,或者一个可观察者的集合

例子:

public void merge(View view){
        Observable observable1 = Observable.interval(1, TimeUnit.SECONDS)
                .map(new Function() {
                    @Override
                    public Object apply(Object o) throws Exception {
                        return "A"+o;
                    }
                });
        Observable observable2 = Observable.interval(1,TimeUnit.SECONDS)
                .map(new Function() {
                    @Override
                    public Object apply(Object o) throws Exception {
                        return "B"+o;
                    }
                });
        Observable.merge(observable1,observable2)
                .subscribe(new Consumer<String>() {
                    @Override
                    public void accept(String o) throws Exception {
                        Log.e("RxTest","accept "+o);
                    }
                });
    }

打印结果:

accept B0
accept A0
accept A1
accept B1
accept A2
accept B2
accept A3
accept B3
accept A4
accept B4
accept A5
accept B5
accept A6
……

可以看出两个可观察者并行发射数据。

发布了83 篇原创文章 · 获赞 65 · 访问量 25万+

猜你喜欢

转载自blog.csdn.net/lixpjita39/article/details/91464100