이번 글에서는 Observable 작업에 유용한 operator에 대해 이야기 합니다.

delay

일정 시간 만큼 데이터를 늦게 전달하는 operator 입니다.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/321934ff-522f-4618-ac05-b5e51844106a/Untitled.png

fun main() {
    println(System.currentTimeMillis())
    val observable = Observable.just("Hello World")
        .delay(1000, TimeUnit.MILLISECONDS)
    observable.subscribe {
        println(System.currentTimeMillis())
        println(it)
    }
    Thread.sleep(2000)
}

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/88e177e6-695c-4e2c-be37-71fc41bf335b/Untitled.png

do

Observable에서 발생하는 이벤트를 감지 할 수 있는 operator 입니다. debug용으로 사용하거나 stream 중간에 interceptor용으로 사용합니다.

fun main() {
    val observable = Observable.just("Hello", "World")
        .doOnNext { println("doOnNext") }
        .doOnSubscribe { println("doOnSubscribe") }
        .doAfterNext { println("doAfterNext") }
        .doAfterTerminate { println("doAfterTerminate") }
        .doFinally { println("doFinally") }
        .doOnComplete { println("doOnComplete") }
        .doOnDispose { println("doOnDispose") }
        .doOnEach { println("doOnEach") }
        .doOnError { println("doOnError") }
        .doOnTerminate { println("doOnTerminate") }
    observable.subscribe {
        println("- $it")
    }
}

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/426cddf5-34b4-4eab-ac50-9e10c93bcdb0/Untitled.png

materialize / dematerialize

TBD

observeOn / subscribeOn

데이터를 생산하고 소비하는 과정까지 중간에 어떤 Scheduler로 동작할 것인지 결정하는 operator 입니다.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/ff6872e4-c963-4bce-896c-93d455047377/Untitled.png

serialize

TBD

subscribe

Observable로부터 전달되는 데이터를 받아서 처리하는 operator 입니다. subscribe는 일반적으로 1개에서 3개의 함수를 구현하거나 3개의 함수를 포함하는 인터페이스(Observer 또는 Subscribe)를 구현해야 합니다. 함수는 onNext, onError, onCompleted가 있습니다.