前言:
- Observer 观察者决定事件触发时有什么行为。
- Observable 决定什么时候触发事件,以及触发什么事件
- Action 取代被观察者,决定触发什么事件,不完整回调
create just from 都是用来创建Observable的,create 用来创建无参Observable,just用来创建一个Observable,而from用来创建一个集合的Observable,参数是一个List。
一. 创建操作符
- interval 隔一段时间发射整数序列的Observable,可以实现定时器:
Observable.interval(3, TimeUnit.SECONDS)
.subscribe {
Log.d("tag", "interval: $it")
}
// 1 2 3 4 5 6 7 8 ...
- 创建发射指定范围的Observable,代替for
Observable.range(0, 6)
.subscribe {
Log.d("tag", "interval: $it")
}
// 1 2 3 4 5
- 创建一个N次重复发射特定数据的Observable
Observable.range(0, 2)
.repeat(2)
.subscribe {
Log.d("tag", "interval: $it")
}
// 0 1 0 1
二. 变换操作符
- map : 变化操作符,可以把一个Observable变成一个新的Observable对象
Observable.just("haha").map {it + "word"}.subscribe{
Log.d("tag",it)
}
- flatMap concatMap : 对将集合中的每个元素进行操作。caoncatMap是保证顺序的。
val fruitList = listOf<String>("apple", "banana", "orange")
Observable.from(fruitList).concatMap { Observable.just(it + "word") }.subscribe {
Log.d("tag :", it)
}
val fruitList2 = listOf<String>("apple", "banana", "orange")
Observable.from(fruitList2).flatMap { Observable.just(it + "word") }.subscribe {
Log.d("tag :", it)
}
//appleword bananaword orangeword
- flatMapIterable 将一个序列转变成一个Iterable接口的集合
Observable.just(1,"asd",true).flatMapIterable {