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

2016-03-23  本文已影响93人  会飞的大象
  1. create
    create(OnSubscribe):创建一个Observable

    一个格式良好的Observable应该试图去调用onComplete()方法一次或者调用onError()方法一次
    注意:通过isUnsubscribed检查是一个良好的实践。当没有Observer时Observable可用避免发射数据或做昂贵的计算
    示例代码:
Observable.create(new Observable.OnSubscribe<Integer>() {
    @Override
    public void call(Subscriber<? super Integer> 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<Integer>() {
        @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。


  2. from
    from(array):将各种对象或数据类型转换成Observable
    from(Iterable)
    from(Future)
    from(Future,Scheduler)
    from(Future,timout,timeUnit)



    示例代码:

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

运行结果:


  1. Interval
  1. just
    just(item)
    类似from,但是会将源数据做为一个整体发射出去


    注意:如果传入nulljust,它会发射一个null出去
  2. range
    range(int,int)
    range(int,int,Scheduler)
    range(n,m)会发射从n开始的m个元素


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

  1. Start
    发射一个函数返回的值


  2. Timer
    timer(long,TimeUnit)
    timer(long,TimeUnit,Scheduler)
    在延迟指定的一段时间后发射一个0


上一篇下一篇

猜你喜欢

热点阅读