RxJava学习笔记2(操作符-创建)

  1. create
    create(OnSubscribe):创建一个Observable
    RxJava学习笔记2(操作符-创建)_第1张图片

    一个格式良好的Observable应该试图去调用onComplete()方法一次或者调用onError()方法一次
    注意:通过isUnsubscribed检查是一个良好的实践。当没有Observer时Observable可用避免发射数据或做昂贵的计算
    示例代码:
Observable.create(new Observable.OnSubscribe() {
    @Override
    public void call(Subscriber observer) {
        try {
            if (!observer.isUnsubscribed()) {
                for (int i = 1; i < 5; i++) {
                    observer.onNext(i);
                }
                observer.onCompleted();
            }
        } catch (Exception e) {
            observer.onError(e);
        }
    }
 } ).subscribe(new Subscriber() {
        @Override
        public void onNext(Integer item) {
            System.out.println("Next: " + item);
        }

        @Override
        public void onError(Throwable error) {
            System.err.println("Error: " + error.getMessage());
        }

        @Override
        public void onCompleted() {
            System.out.println("Sequence complete.");
        }
    });
  1. defer
    defer():直到有observer订阅才创建Observable,并且为每个Observer创建最新的Observable。


    RxJava学习笔记2(操作符-创建)_第2张图片
  2. from
    from(array):将各种对象或数据类型转换成Observable
    from(Iterable)
    from(Future)
    from(Future,Scheduler)
    from(Future,timout,timeUnit)


    RxJava学习笔记2(操作符-创建)_第3张图片

    示例代码:

Integer[] items = { 0, 1, 2, 3, 4, 5 };
Observable myObservable = Observable.from(items);
myObservable.subscribe(
    new Action1() {
        @Override
        public void call(Integer item) {
            System.out.println(item);
        }
    },
    new Action1() {
        @Override
        public void call(Throwable error) {
            System.out.println("Error encountered: " + error.getMessage());
        }
    },
    new Action0() {
        @Override
        public void call() {
            System.out.println("Sequence complete");
        }
    }
);

运行结果:


RxJava学习笔记2(操作符-创建)_第4张图片
  1. Interval
  • interval(long,TimeUnit)
    interval(long,TimeUnit,Scheduler)
    每隔一个时间段发射一个增长的整数


    RxJava学习笔记2(操作符-创建)_第5张图片
  • interval(long,long,TimeUnit)
    interval(long,long,TimeUnit,Scheduler)
    第一个参数指定的时间发射一个0,然后按第二个参数指定的时间每隔一个时间段发射一个增长的整数


    RxJava学习笔记2(操作符-创建)_第6张图片
  1. just
    just(item)
    类似from,但是会将源数据做为一个整体发射出去

    RxJava学习笔记2(操作符-创建)_第7张图片

    注意:如果传入nulljust,它会发射一个null出去

  2. range
    range(int,int)
    range(int,int,Scheduler)
    range(n,m)会发射从n开始的m个元素

    RxJava学习笔记2(操作符-创建)_第8张图片

    注意:如果n为0,则不会发射任何值;如果n<0,则会抛异常

  3. repeat

  • repeat()
    repeat(long)
    repeat(Scheduler)
    repeat(long,Scheduler)
    不会初始化一个Observable,而是会对一个Observable重复发射


    RxJava学习笔记2(操作符-创建)_第9张图片
  • repeatWhen(Func1)
    repeatWhen(Func1,Scheduler)


    RxJava学习笔记2(操作符-创建)_第10张图片
  1. Start
    发射一个函数返回的值


    RxJava学习笔记2(操作符-创建)_第11张图片
  2. Timer
    timer(long,TimeUnit)
    timer(long,TimeUnit,Scheduler)
    在延迟指定的一段时间后发射一个0


    RxJava学习笔记2(操作符-创建)_第12张图片

你可能感兴趣的:(RxJava学习笔记2(操作符-创建))