Rxjava 操作符-2-变换操作符

1、map

map 操作符的作用是对 对象进行转换

Observable.just(1)
        .map(new Function<Integer, String>() {
            @Override
            public String apply(Integer s) throws Exception {
                return "My Name is" + s;
            }
        }).subscribe(consumer);

2、flatMap

flatMap 操作符的作用是对 一组对象进行转换

Observable.fromArray(1, 2, 3).flatMap(new Function<Integer, ObservableSource<String>>() {
                    @Override
                    public ObservableSource<String> apply(Integer integer) throws Exception {
                        if (2 == integer) {
                            return Observable.just("My Name is:" + integer);
                        }
                        return Observable.just("My Name is:" + integer).delay(200, TimeUnit.MILLISECONDS, AndroidSchedulers.mainThread());
                    }
                }).subscribe(consumer);

Toast 2、1、3

3、concatMap

 Observable.fromArray(1, 2, 3).concatMap(new Function<Integer, ObservableSource<String>>() {
                    @Override
                    public ObservableSource<String> apply(Integer integer) throws Exception {
                        if (2 == integer) {
                            return Observable.just("My Name is:" + integer);
                        }
                        return Observable.just("My Name is:" + integer).delay(200, TimeUnit.MILLISECONDS, AndroidSchedulers.mainThread());
                    }
                }).subscribe(consumer);

Toast =1、2、3

concatMap能保证顺序,flatMap 不能保证顺序

4、cast

cast操作符,将类对象进行转换

\color{red}{只能由父类对象转换为子类对象}

Object[] objectsArr = {"1", "2", "3"};
Observable.from(objectsArr).cast(String.class).subscribe(onNextAction);

5、buffer

buffer将原有Observable转换为一个新的Observable,这个新的Observable每次发送一组值,而不是一个个进行发送

Observable.just(1, 2, 3, 4, 5)
        .buffer(3,1).subscribe(new Consumer<List<Integer>>() {
    @Override
    public void accept(List<Integer> list) throws Exception {
        for (Integer i : list) {
            Toast.makeText(getActivity(), "new Number i is:" + i, Toast.LENGTH_SHORT).show();
            Log.e("tag","new Number i is:" + i);
        }
        Toast.makeText(getActivity(), "Another request is called", Toast.LENGTH_SHORT).show();
        Log.e("tag","Another request is called");
    }
});
tag: new Number i is:1
tag: new Number i is:2
tag: new Number i is:3
tag: Another request is called
tag: new Number i is:2
tag: new Number i is:3
tag: new Number i is:4
tag: Another request is called
tag: new Number i is:3
tag: new Number i is:4
tag: new Number i is:5
tag: Another request is called
tag: new Number i is:4
tag: new Number i is:5
tag: Another request is called
tag: new Number i is:5
tag: Another request is called
Observable.just(1, 2, 3, 4, 5)
        .buffer(3).subscribe(new Consumer<List<Integer>>() {
    @Override
    public void accept(List<Integer> list) throws Exception {
        for (Integer i : list) {
            Toast.makeText(getActivity(), "new Number i is:" + i, Toast.LENGTH_SHORT).show();
            Log.e("tag","new Number i is:" + i);
        }
        Toast.makeText(getActivity(), "Another request is called", Toast.LENGTH_SHORT).show();
        Log.e("tag","Another request is called");
    }
});
tag: new Number i is:1
tag: new Number i is:2
tag: new Number i is:3
tag: Another request is called
tag: new Number i is:4
tag: new Number i is:5
tag: Another request is called

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容