반응형
[출처 - RxJava 프로그래밍 : 리액티브 프로그래밍 기초부터 안드로이드 까지 한번에]
본 글은 'RxJava 프로그래밍 : 리액티브 프로그래밍 기초부터 안드로이드 까지 한번에' 를 학습하면서 정리한 글입니다
마블다이어그램 참고 - http://reactivex.io/RxJava/javadoc/io/reactivex/Flowable.html#timeInterval--
timeinterval 함수는 어떤 값을 발행했을 때 이전 값을 발행한 이 후 얼마나 시간이 흘렀는 지를 알려줍니다.
testcode를 통해 확인해 보겠습니다. (CommonUtils와 CommonUtilsk의 내용은 여기에서 확인 할 수 있습니다.)
Java
import io.reactivex.Observable;
public class timeinterval_test {
public static void main(String[] args){
String[] data = {"1","3","5"};
CommonUtils.exampleStart();
Observable source = Observable.fromArray(data)
.delay(item->{
CommonUtils.doSomething();
return Observable.just(item);
}).timeInterval();
source.subscribe(it->{
long time = System.currentTimeMillis() - CommonUtils.startTime;
System.out.println(CommonUtils.getThreadName() + " | " + time + " | " + "value = " + it);
});
CommonUtils.sleep(1000);
}
}
Kotlin
import io.reactivex.Observable
import io.reactivex.rxkotlin.toObservable
fun main(){
CommonUtilsk.exampleStart()
val data = arrayOf("1","3","5")
val source = data.toObservable()
.delay { item->
CommonUtilsk.doSomething()
return@delay Observable.just(item)
}.timeInterval()
source.subscribe { it->
val time = System.currentTimeMillis() - CommonUtilsk.startTime
println(CommonUtilsk.getThreadName() + " | " + time + " | " + "value = " + it)
}
CommonUtilsk.sleep(1000)
}
결과
main | 229 | value = Timed[time=10, unit=MILLISECONDS, value=1]
main | 253 | value = Timed[time=24, unit=MILLISECONDS, value=3]
main | 315 | value = Timed[time=62, unit=MILLISECONDS, value=5]
위의 결과를 보면 이전 발행부터 현재 발행까지의 걸린 시간을 time과 unit으로 확인 할 수 있고 value도 확인 할 수 있습니다.
이렇게 나오는 이유는 timeinterval 함수의 원형을 보면
@CheckReturnValue
@SchedulerSupport(SchedulerSupport.NONE)
public final Observable<Timed<T>> timeInterval() {
return timeInterval(TimeUnit.MILLISECONDS, Schedulers.computation());
}
Observale<Timed<T>>를 Timed 객체를 가지는 Observable을 반환 하고 있습니다. 그리고 Timed 객체를 보면
final T value;
final long time;
final TimeUnit unit;
이렇게 3개의 변수를 가지고 있어 위의 결과 처럼 시간값과 단위 그리고 결과가 나오는 것입니다.
반응형
'2023년 이전 > ReativeX' 카테고리의 다른 글
RxJava,RxKoltin - 스케줄러(2) (0) | 2020.01.27 |
---|---|
RxJava, RxKotlin - 스케쥴러(1) (0) | 2020.01.21 |
RxJava,RxKotlin - delay() 함수 (0) | 2020.01.20 |
RxJava - 수학관련 함수 (0) | 2020.01.20 |
RxJava,RxKotlin - 기타 함수 (0) | 2020.01.19 |