RxJava学习:变换操作符

对事件序列中的事件 / 整个事件序列 进行加工处理(即变换),使得其转变成不同的事件 / 整个事件序列 。

map

对每个事件进行变换,并返回一个 Observable,该 Observable 发出这些结果 由函数计算得到。

Observable.just(1,2,3,4).map(object : Function<Int, String>{
            override fun apply(t: Int): String {
                return "number is $t"
            }
        }).subscribe(object : Observer<String>{
            override fun onSubscribe(d: Disposable?) {
                TODO("Not yet implemented")
            }

            override fun onNext(t: String?) {
                TODO("Not yet implemented")
            }

            override fun onError(e: Throwable?) {
                TODO("Not yet implemented")
            }

            override fun onComplete() {
                TODO("Not yet implemented")
            }

        })

在这里插入图片描述

flatmap

link
在这里插入图片描述
将被观察者发送的事件序列各自单独转换为一个Observable,再合并成一个新的事件序列,最后再进行发送。新合并生成的事件序列顺序是无序的, 与旧序列发送事件的顺序无关。

Observable.interval(3, 4, TimeUnit.SECONDS)
          .flatMap(object : Function<Long, ObservableSource<String>> {
              override fun apply(t: Long): ObservableSource<String> {
                  val list = ArrayList<String>()
                  for (i in 0 until 3) {
                      list.add("事件 $t 的子事件")
                  }
                  return Observable.fromIterable(list)
              }
          }).subscribe {
              Log.d(TAG, it)
          }

concatMap

使用和flatMap一致, 但是生成的序列是有序的。根据原始序列变换结果发射数据。

Buffer

定期从 被观察者(Obervable)需要发送的事件中 获取一定数量的事件 & 放到缓存区中,最终发送。
在这里插入图片描述

Observable.just(1,2,3,4).buffer(3/*缓存大小*/,1/*步长*/)
    .subscribe {
        Log.d(TAG, "size = $it.size")
    }
    //Event:(1,2,3),(2,3,4),(3,4),(4)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值