본문 바로가기

Rx

(12)
RxKotlin- Part 9. 스케줄러 스케줄러 스케줄러는 Thread를 지정할 수 있게 해줍니다. 스케줄러를 활용하면 데이터 흐름이 발생하는 Thread, 처리된 결과를 구독자에게 전달하는 Thread를 분리할 수 있습니다. 스케줄러를 별도로 지정하지 않으면 Main Thread에서 동작을 실행합니다. 스케줄러의 종류 뉴 스레드 스케줄러 새로운 스레드를 생성합니다. Schedulers.newThread() RxJava에서 계산 스케줄러, IO 스케줄러를 제공하기 때문에 상황에 맞게 사용하는 것이 좋다고 합니다. 계산 스케줄러 CPU에 대응하는 계산용 스케줄러로, 내부적으로 스레드 풀을 생성하며, 스레드 개수는 기본적으로 프로세서 개수와 동일합니다. Schedulers.computation() IO 스케줄러 계산 스케줄러와 다르게 필요 시 스..
RxKotlin- Part 8-2. 필터 연산자 : filter(), take(), skip(), distinct() filter() filter() 함수는 Observable에서 필요없는 데이터는 제거하고, 원하는 데이터만 filter()를 통해 걸러집니다. fun main() { val arr = arrayOf(1, 2, 3, 4, 5) val ob = Observable.fromArray(*arr) .filter{ it > 3 } ob.subscribe(System.out::println) } 실행결과 : 4 5 take() 첫번째부터 i번째 데이터를 Observer에게 보냅니다. fun main() { val arr = arrayOf(1, 2, 3, 4, 5) val ob = Observable.fromArray(*arr) .take(3) ob.subscribe(System.out::println) } 실행결과 ..
RxKotlin- Part 8-1. 변환 연산자 : map(), flatMap(), reduce() map() map() 함수는 입력값을 어떤 함수에 넣어서 원하는 값으로 변환하는 함수입니다. String을 String, Integer, 다른 객체 등으로 변환할 수 있습니다. map() 함수의 원형을 살펴보겠습니다. @CheckReturnValue //반환값을 확인하다는 의미입니다. @SchedulerSupport(value="none") //스케줄러를 지원하지 않는다는 의미로 현재 스레드에서 실행합니다. public final OBservable map(Function
RxKotlin- Part 8. Reactive 연산자 Reactive 연산자 연산자 종류 연산자 함수 생성(Creating) just(), fromXXX(), create(), interval(), range(), timer(), intervalRange(), defer(), repeat() 옵저버블, 싱글 클래스 등으로 데이터의 흐름을 만들어내는 함수입니다. 변환(Transforming) map(), flatMap(), concatMap(), switchMap(), groupBy(), scan(), buffer(), window(), reduce() 어떤 입력을 받아 원하는 출력 결과를 내는 함수입니다. 필터(Filter) filter(), take(), skip(), distinct() 입력 데이터 중 원하는 데이터만 걸러냅니다. 합성(Combining..
RxKotlin- Part 7. ConnectableObservable Class ConnectableObservable 클래스는 Subject 클래스와 같이 콜드 Observable을 핫 Observable로 변환합니다. Observable을 여러 구독자에게 동시에 전달이 가능하며, subscribe() 함수를 호출하더라도 아무런 동작이 일어나지 않는다는 특징이 있습니다. subscribe() 함수를 호출하더라도 아무런 동작이 일어나지 않는 이유는 connect() 함수를 호출한 시점부터 subscribe() 함수를 호출한 구독자에게 데이터를 발행하기 때문입니다. ConnectableObsevable 객체를 생성하려면 먼저 Observable에 publish() 함수를 호출하면 됩니다. publish() 함수는 여러 구독자에게 데이터를 발행학 위해 connect() 함수를 호출하기 ..
RxKotlin- Part 6. Subject Class 2021/02/10 - [Rx] - RxJava - Part 5. Hot Observable, Cold Observable RxJava - Part 5. Hot Observable, Cold Observable Cold Observable Observable은 Hot, Cold로 볼 수 있습니다. 콜드 Observable은 Observable을 선언하고 just(), from...() 함수를 호출해도 Observer(옵저버)가 subscribe() 함수를 호출해 구독하지 않으면 데이터.. goni95.tistory.com 위의 포스트에서 공부했던 Part 5.에서 Subject에 대해 콜드 Observable을 핫 Observable로 바꾸어 준다고 언급했었습니다. Subject에 대해 공부해보려고 합니..
RxKotlin- Part 5. Hot Observable, Cold Observable Cold Observable Observable은 Hot, Cold로 볼 수 있습니다. 콜드 Observable은 Observable을 선언하고 just(), from...() 함수를 호출해도 Observer(옵저버)가 subscribe() 함수를 호출해 구독하지 않으면 데이터를 발행(emit)하지 않습니다. 콜드Observable은 보통 웹 요청, 데이터베이스 쿼리, 파일 읽기 등에 적합하고, URL이나 데이터를 지정하면 해당 서버 또는 데이터베이스로 부터 요청을 보내고 결과를 받아옵니다. /** 콜드 옵저버블 */ fun main(){ val observable : Observable = listOf("item 1","item 2","item 3").toObservable() // toObservab..
RxKotlin- Part 4. Observable 외 다른 스트림 (Single , Maybe) Single Observale은 무한한 데이터 발행이 가능하지만, Single class는 오직 1개만 발행하도록 되어있으며, 발행과 동시에 종료가 되고 종료시 onSuccess가 호출됩니다. Single class는 Observable과 같은 방법으로 활용할 수 있습니다. import io.reactivex.Single import io.reactivex.functions.Consumer import io.reactivex.rxkotlin.subscribeBy fun main() { val single = Single.just("Single class") single.subscribe { data -> println(data) } //or single.subscribeBy( onSuccess = { p..