Rxjava创造操作符

rxjava 操作符kotlin 语法练习

依赖

    implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
    implementation 'io.reactivex.rxjava2:rxjava:2.2.9'

经常会使用的固定式语句

1、异步订阅观察者 (切换到子线程)

  .subscribeOn(Schedulers.io())

2、排放到主线程执行

 .observeOn(AndroidSchedulers.mainThread())

3、订阅一个可被观察资源

.subscribe()

Observable的创建操作符

createjust、dafer 、from(fromArray 、fromFuture   、fromIterable 、 fromCallable)、range 、intervalintervalRange  、timer

1、create   创建新的Observable实例 

 Observable.create<Any> {
            it.onNext("创建一个可被观察的对象")
        }.subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe {
                    println(it)
                }

2、just 发出每个项目的可观察对象

 Observable.just("1", "2", 5, 8, Any())
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe {
                    println(it.toString())
                }

3、dafer     ObservableSource工厂函数   ,返回一个Observable,该Observable调用一个ObservableSource工厂来为每个新的Observer创建一个ObservableSource

   Observable.defer(object : Callable<Observable<String>> {
            override fun call(): Observable<String> {
                return Observable.create { it.onNext("haodada") }
            }
        }).subscribe {
            pprintln(it.toString())
        }

4、fromArray 一个发出源数组中的每个项的可观察对象

 Observable.fromArray("1", 5, 9, "5")
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe {
                    println(it.toString())
                }

5、fromFuture   将{ Future}转换为ObservableSource。 

        var task = FutureTask(Callable<String> {
            "task ${Thread.currentThread().id}"
        })
        Observable.fromFuture(task)
            .subscribe({ s: String? -> pprintln(" onNext : ${s}") },
                { o: Throwable? -> pprintln(" onError : ${o}") },
                { pprintln(" onComplete!!") },
                { disposable: Disposable? ->
                    pprintln(" onSubscribe!!")
                    task.run()
                })

 6、fromIterable  将{ 集合}转换为ObservableSource。 

  var array = arrayListOf(1, 2, 2, 5, 6, 6, 9)
        Observable.fromIterable(array)
            .subscribe {
                pprintln(it.toString())
            }

 7、fromCallable 返回一个可观察对象,当一个观察者订阅它时,它会调用你指定的函数,然后发出从该函数返回的值。

  Observable.fromCallable { Math.abs(-5)}
            .subscribe {
                pprintln(it.toString())
            }

8、range  它发出指定范围内的一系列整数

       Observable.range(200,1000).subscribe {
            pprintln(it.toString())
        }

9、interval  返回一个可观察对象,它会在每一个指定的时间间隔发出一个连续的数字

Observable.interval(10,20,TimeUnit.MILLISECONDS)
            .subscribe {
                pprintln(it.toString())
            }
10、intervalRange (rang 范围  interval 间隔)  返回一个可观察对象,它会在每一个指定的时间间隔发出一个连续的数字。信号一个长值的范围,第一个在一些初始延迟后,其余的周期性后。
  Observable.intervalRange(10, 100, 200, 10, TimeUnit.MILLISECONDS)
            .subscribe {
                pprintln(it.toString())
            }

11、返回一个可观察对象,它在指定的延迟之后发出,然后完成。

 var disposable: Disposable// disposable.dispose() 事件的终止/重新计时
        Observable.timer(200, TimeUnit.MILLISECONDS)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe({
                pprintln(it.toString())
            }, {

            }, {

            }, {
                disposable = it
            })

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值