RX操作符之Observable的创建方式二(defer、range、interval、timer、Empty、Never、Throw)

String [] items = new String[] {"just1","just2","just3","just4","just5","just6"};
Observable<String> myObservable = Observable.fromArray(items);
Subject<String> subject = new Subject<String>() {
    @Override
    public void onSubscribe(Disposable d) {
 
    }

    @Override
    public void onNext(String value) {
        System.out.println("onNext................."+value);
    }


    @Override
    public void onError(Throwable e) {

    }


    @Override
    public void onComplete() {
        System.out.println("onCompleted.................");
    }


    @Override
    protected void subscribeActual(Observer<? super String> observer) {

    }

    @Override
    public boolean hasObservers() {
        return false;
    }


    @Override
    public boolean hasThrowable() {
        return false;
    }


    @Override
    public boolean hasComplete() {
        return false;
    }


    @Override
    public Throwable getThrowable() {
        return null;
    }
};
Subject<String> subject1 = new Subject<String>() {
    @Override
    public void onSubscribe(Disposable d) {

    }

    @Override
    public void onNext(String value) {
        System.out.println("onNext................."+value);
    }


    @Override
    public void onError(Throwable e) {

    }


    @Override
    public void onComplete() {
        System.out.println("onCompleted1.................");
    }


    @Override
    protected void subscribeActual(Observer<? super String> observer) {

    }

    @Override
    public boolean hasObservers() {
        return false;
    }


    @Override
    public boolean hasThrowable() {
        return false;
    }


    @Override
    public boolean hasComplete() {
        return false;
    }


    @Override
    public Throwable getThrowable() {
        return null;
    }
};
myObservable.subscribe(subject);
myObservable.subscribe(subject1);
9-05 15:32:58.129 18491-18491 I/System.out: onNext.................just1
09-05 15:32:58.129 18491-18491 I/System.out: onNext.................just2
09-05 15:32:58.129 18491-18491 I/System.out: onNext.................just3
09-05 15:32:58.129 18491-18491 I/System.out: onNext.................just4
09-05 15:32:58.129 18491-18491 I/System.out: onNext.................just5
09-05 15:32:58.129 18491-18491 I/System.out: onNext.................just6
09-05 15:32:58.129 18491-18491 I/System.out: onCompleted.................
09-05 15:32:58.129 18491-18491 I/System.out: onNext.................just1
09-05 15:32:58.129 18491-18491 I/System.out: onNext.................just2
09-05 15:32:58.129 18491-18491 I/System.out: onNext.................just3
09-05 15:32:58.139 18491-18491I/System.out: onNext.................just4
09-05 15:32:58.139 18491-18491 I/System.out: onNext.................just5
09-05 15:32:58.139 18491-18491/com.vise.snowdemo I/System.out: onNext.................just6
09-05 15:32:58.139 18491-18491/com.vise.snowdemo I/System.out: onCompleted1.................

二、Range

创建一个发射特定整数序列的Observable,接收两个参数,第一个参数是范围的起始值,第二个参数是范围的数据数目,即需要多产生多少个这样的值。如果你将第二个参数设为0,将导致Observable不发射任何数据(如果设置为负数,会抛异常)。range默认不在任何特定的调度器上执行
Observable<Integer> myObservable = Observable.range(5,10);
Subject<Integer> mySubscriber = new Subject<Integer>() {
    @Override
    public void onSubscribe(Disposable d) {

    }

    @Override
    public void onNext(Integer value) {
        System.out.println(String.valueOf(value));
    }
    @Override
    public void onError(Throwable e) {

    }
    @Override
    public void onComplete() {
        System.out.println("onCompleted.................");
    }

    @Override
    protected void subscribeActual(Observer<? super Integer> observer) {
    }
    @Override
    public boolean hasObservers() {
        return false;
    }

    @Override
    public boolean hasThrowable() {
        return false;
    }

    @Override
    public boolean hasComplete() {
        return false;
    }


    @Override
    public Throwable getThrowable() {
        return null;
    }
};

myObservable.subscribe(mySubscriber);

09-05 15:44:22.169 27514-27514 I/System.out: 5
09-05 15:44:22.169 27514-27514 I/System.out: 6
09-05 15:44:22.169 27514-27514 I/System.out: 7
09-05 15:44:22.169 27514-27514 I/System.out: 8
09-05 15:44:22.169 27514-27514 I/System.out: 9
09-05 15:44:22.169 27514-27514 I/System.out: 10
09-05 15:44:22.169 27514-27514 I/System.out: 11
09-05 15:44:22.169 27514-27514 I/System.out: 12
09-05 15:44:22.169 27514-27514 I/System.out: 13
09-05 15:44:22.169 27514-27514 I/System.out: 14
09-05 15:44:22.169 27514-27514 I/System.out: onCompleted...
三、
Interval
Interval操作符返回一个Observable,它按固定的时间间隔发射一个无限递增的整数序列。
RxJava将这个操作符实现为interval方法。
它接受一个表示时间间隔的参数和一个表示时间单位的参数。结果递增且不断增加
五、Empty

        创建一个不发射任何数据但是正常终止的Observable
六、Never

        创建一个不发射数据也不终止的Observable
七、Throw

        创建一个不发射数据以一个错误终止的Observable


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值