zoukankan      html  css  js  c++  java
  • Rxjava学习笔记

    1、使用Observable.range(int start, int count)创建一个发射特定整数序列的Observable,第一个参数为起始值,第二个为发送的个数,如果为0则不发送,负数则抛异常。

    import rx.Observable;
    import rx.Subscriber;
    
    public class MyDemo {
    
        public static void main(String[] args) {
            //创建发射源(被观察者)
            Observable<Integer> observable = Observable.range(1, 5);
            //创建接收源(观察者)
            Subscriber<Object> subscriber = new Subscriber<Object>() {
                @Override
                public void onStart() {
                    System.out.println("Subscriber onStart: ");
                }
    
                @Override
                public void onCompleted() {
                    System.out.println("Subscriber onCompleted: ");
                }
    
                @Override
                public void onError(Throwable e) {
                    System.out.println("Subscriber onError: " + e.toString());
                }
    
                @Override
                public void onNext(Object t) {
                    System.out.println("Subscriber onNext: " + t);
                }
            };
            //订阅
            observable.subscribe(subscriber);
        }
    }

    2、Subscriber的简化

    RxJava提供了Action0等一系列的类似的类,当我们不需要(或者不关心)Subscriber的全部方法(如只关心onNext方法),就可以使用Action类来替代Subscriber。

    2.1、当我们并不关心OnComplete和OnError,可以使用 subscribe(onNextAction),我们只需要在onNext的时候做一些处理,这时候就可以使用Action1类:

    import rx.Observable;
    import rx.functions.Action1;
    
    public class MyDemo {
    
        public static void main(String[] args) {
            Person person = new Person(21, "js");
            //创建发射源(被观察者)
            Observable<Person> observable = Observable.just(person);
            //订阅,创建接收源(观察者)
            observable.subscribe(new Action1<Person>() {
    
                @Override
                public void call(Person t) {
                    System.out.println("Action1 call:" + t.toString());
                }
            });
        }
        private static class Person{
            private int age;
            private String name;
            
            public Person(int age, String name) {
                this.age = age;
                this.name = name;
            }
    
            public int getAge() {
                return age;
            }
            public void setAge(int age) {
                this.age = age;
            }
            public String getName() {
                return name;
            }
            public void setName(String name) {
                this.name = name;
            }
            
            @Override
            public String toString() {
                return "Person[age=" + age + ",name=" + name + "]" ;
            }
        }
    }

    2.2、subscribe方法还有两个重载方法,分别是:

    • 两个参数: subscribe(onNextAction , onErrorAction)
    • 三个参数: subscribe(onNextAction , onErrorAction ,onCompletedAction)
    import rx.Observable;
    import rx.functions.Action0;
    import rx.functions.Action1;
    
    public class MyDemo {
    
        public static void main(String[] args) {
            Person person = new Person(21, "js");
            //创建发射源(被观察者)
            Observable<Person> observable = Observable.just(person);
            //订阅,创建接收源(观察者)
            Action1<Person> onNextAction = new Action1<Person>() {
                @Override
                public void call(Person t) {
                    System.out.println("Action1 call:" + t.toString());
                }
            };
            Action1<Throwable> onErrorAction = new Action1<Throwable>() {
                @Override
                public void call(Throwable t) {
                    System.out.println("Action1 call:" + t.toString());
                }
            };
            Action0 onCompletedAction = new Action0() {
                @Override
                public void call() {
                    System.out.println("Action0 call");
                }
            };
            observable.subscribe(onNextAction, onErrorAction);
            observable.subscribe(onNextAction, onErrorAction, onCompletedAction);
        }
        private static class Person{
            private int age;
            private String name;
            
            public Person(int age, String name) {
                this.age = age;
                this.name = name;
            }
    
            public int getAge() {
                return age;
            }
            public void setAge(int age) {
                this.age = age;
            }
            public String getName() {
                return name;
            }
            public void setName(String name) {
                this.name = name;
            }
            
            @Override
            public String toString() {
                return "Person[age=" + age + ",name=" + name + "]" ;
            }
        }
    }
  • 相关阅读:
    bootstrap-table 切换页码保留勾选的checkbox
    vsftp服务器同步文件
    MySQL5.7 主从复制配置
    VMware NAT模式下设置网络
    在Jsp中调用静态资源,路径配置问题,jsp获取路径的一些方法
    centos7.3安装配置vsftp
    Linux安装配置Nginx
    jsp登录页面,展示错误信息,刷新页面后错误依然存在解决方案
    linux中使用Jmeter压测总结
    常规测试方法
  • 原文地址:https://www.cnblogs.com/jiangwangxiang/p/12014274.html
Copyright © 2011-2022 走看看