본문 바로가기
2023년 이전/ReativeX

RxJava,RxKotlin - delay() 함수

by JeongUPark 2020. 1. 20.
반응형

[출처 - RxJava 프로그래밍 : 리액티브 프로그래밍 기초부터 안드로이드 까지 한번에]

본 글은 'RxJava 프로그래밍 : 리액티브 프로그래밍 기초부터 안드로이드 까지 한번에' 를 학습하면서 정리한 글입니다

 

마블다이어그램 참고 - http://reactivex.io/RxJava/javadoc/io/reactivex/Flowable.html#delay-io.reactivex.functions.Function-



delay 함수는 인자로 전달받는 time과 시간 단위 만큼 입력받은 Observable의 데이터 발행을 지연시켜주는 역할을 합니다.

 

testcode로 확인해 보겠습니다. (CommonUtils와 CommonUtilsk의 내용은 여기에서 확인 할 수 있습니다.)

 

Java

import io.reactivex.Observable;
import java.util.concurrent.TimeUnit;

public class delay_test {

    public static void main(String[] args){

        String[] data = {"1","7","2","3","4"};

        Observable source = Observable.fromArray(data)
                .delay(100L, TimeUnit.MILLISECONDS);
        CommonUtils.exampleStart();
        source.subscribe(it->{
            long time = System.currentTimeMillis() - CommonUtils.startTime;
            System.out.println(CommonUtils.getThreadName() + " | " + time + " | " + "value = " + it);
        });
        CommonUtils.sleep(1000);
    }
}

kotlin

import io.reactivex.rxkotlin.toObservable
import java.util.concurrent.TimeUnit

fun main(){

    val data = arrayOf("1","7","2","3","4")

    val source = data.toObservable().delay(100L,TimeUnit.MILLISECONDS)
    CommonUtilsk.exampleStart()
    source.subscribe { it->
        val time = System.currentTimeMillis() - CommonUtilsk.startTime
        println(CommonUtilsk.getThreadName() + " | " + time + " | " + "value = " + it)
    }
    CommonUtilsk.sleep(1000)
}

 

결과

RxComputationThreadPool-1 | 112 | value = 1
RxComputationThreadPool-1 | 113 | value = 7
RxComputationThreadPool-1 | 113 | value = 2
RxComputationThreadPool-1 | 113 | value = 3
RxComputationThreadPool-1 | 113 | value = 4

 

delay를 제거한 결과는

main | 11 | value = 1
main | 12 | value = 7
main | 12 | value = 2
main | 12 | value = 3
main | 12 | value = 4

이렇게 100ms 정도 작습니다.

반응형

'2023년 이전 > ReativeX' 카테고리의 다른 글

RxJava, RxKotlin - 스케쥴러(1)  (0) 2020.01.21
RxJava, RxKotlin - timeinterval 함수  (0) 2020.01.20
RxJava - 수학관련 함수  (0) 2020.01.20
RxJava,RxKotlin - 기타 함수  (0) 2020.01.19
RxJava,RxKotlin - all 함수  (0) 2020.01.19