RxJava的学习之创建操作符

1、create操作符

    使用Create操作符从头开始创建一个Observable,给这个操作符传递一个接受观察者作为参数的函数,我们需要实现call方法发射一些数据,并恰当的调用观察者的onNext,onError和onCompleted方法。
create方法默认不在任何特定的调度器上执行。
create操作符是所有创建型操作符的“根”,也就是说其他创建型操作符最后都是通过create操作符来创建Observable的

 Observable.create(new Observable.OnSubscribe<Integer>() {
      @Override public void call(Subscriber<? super Integer> subscriber) {
        for (int i = 0; i < 5; i++) {
          subscriber.onNext(i);
          try {
            Thread.sleep(1000);
          } catch (InterruptedException e) {
            e.printStackTrace();
          }
        }
      }
    }).subscribe(new Action1<Integer>() {
      @Override public void call(Integer integer) {
        Log.d("TAG",String.valueOf(integer));
      }
    });

2、from操作符

(1)定义:将其它种类的对象和数据类型转换为Observable
(2)特点:将某个对象转换为Observable对象,
然后依次的从对象(可能是Array或Iterable对象)中拿取数据,一个一个的发送。
(3)数据格式如下5种形式:
    from(array)
    from(Iterable)
    from(Future)
    from(Future,Scheduler)
    from(Future,timeout, timeUnit)

代码示例:

  public void from(){
    String str[]={"one","two","three","four"};
    Observable.from(str).subscribe(new Subscriber<String>() {
      @Override public void onCompleted() {
        Log.d("TAG","发送完成");
      }

      @Override public void onError(Throwable e) {

      }

      @Override public void onNext(String s) {
        Log.d("TAG",s);
      }
    });
  }

这里写图片描述

3、just操作符

(1)定义:Just将单个数据转换为发射那个数据的Observable,创建一个发射指定值的Observable
(2)介绍:
Just将单个数据转换为发射那个数据的Observable,创建一个发射指定值的Observable。
Just类似于From,但是From会将数组或Iterable的素具取出然后逐个发射,而Just只是简单的原样发射,
将数组或Iterable当做单个数据。
如果需要空Observable你应该使用Empty操作RxJava将这个操作符实现为just函数,它接受一至十个参数,
返回一个按参数列表顺序发射这些数据的Observable。
如果看它的源码的话,你会发现其实它是对from的封装,他调用的还是from。
源码:
  public static <T> Observable<T> just(T t1, T t2) {
        return from((T[])new Object[] { t1, t2 });
    }

代码示例:

 Observable.just("one","two","three","four").subscribe(new Subscriber<String>() {
      @Override public void onCompleted() {
        Log.d("TAG","发送完成");
      }

      @Override public void onError(Throwable e) {

      }

      @Override public void onNext(String s) {
        Log.d("TAG",s);
      }
    });
 List<String> list = new ArrayList<>();
    list.add("one");
    list.add("two");
    list.add("three");
    list.add("four");
    Observable.just(list).subscribe(new Subscriber<List<String>>() {
      @Override public void onCompleted() {
        Log.d("TAG","发送完成");
      }

      @Override public void onError(Throwable e) {

      }

      @Override public void onNext(List<String> list) {
        Log.d("TAG",list.toString());
      }
    });

这里写图片描述

4、range操作符

(1)range操作符发射一个范围内的有序整数序列,你可以指定范围的起始和长度。
(2)range有两个参数,第一参数是起始的位置,第二个参数是要输出的个数,
    两个参数都是整型数据。一般可以结合Iterable对象和数组使用。

代码示例:

final List<String> list = new ArrayList<>();
    list.add("one");
    list.add("two");
    list.add("three");
    list.add("four");
    Observable.range(0,2).subscribe(new Subscriber<Integer>() {
      @Override public void onCompleted() {
          Log.d("TAG","发送完成");
      }

      @Override public void onError(Throwable e) {

      }

      @Override public void onNext(Integer integer) {
          Log.d("TAG",list.get(integer));
      }
    });

这里写图片描述

当然创建操作符不止这些,我只是列举出一些比较常用的操作符,想要了解更多的操作符,点击这里。可能写的不是很好,若有问题,欢迎在评论下方提意见。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值