본문 바로가기

gyub's 공부일기

(41)
[RxJava] 변환 연산자 concatMap(), switchMap(), groupBy(), scan() 1. 변환 연산자 변환 연산자는 데이터 흐름을 원하는 대로 변형할 수 있는 연산자입니다. 이번 글에서는 flatMap()과 동일한 계열인 concatMap()과 switchMap() 함수, reduce() 함수와 유사한 scan()함수, 색다른 groupBy() 함수를 다뤄보겠습니다. 2. concatMap() 함수 concatMap() 함수는 flatMap() 함수와 비슷합니다. flatMap()는 먼저 들어온 데이터를 처리하는 도중에 새로운 데이터가 들어오면 나중에 들어온 데이터의 처리 결과가 먼저 출력 될 수도 있습니다. 이것을 인터리빙(=끼어들기, interleaving)이라고 합니다. 이와 반대로 concatMap() 함수는 먼저 들어오는 데이터 순서대로 처리해서 결과를 낼 수 있도록 보장해줍니..
[RxJava] 생성 연산자 interval(), timer(), range(), intervalRange(), defer() 생성 연산자의 역할은 데이터 흐름을 만드는 것입니다. 간단하게 말해서 Observable(Observable, Single, Maybe 객체 등 )을 만든다고 생각하면 됩니다! 1. interval() 함수 interval() 함수는 일정 시간 간격으로 데이터 흐름을 생성합니다. 위 그림처럼 주어진 시간 간격으로 0부터 1씩 증가하는 Long 객체를 발행합니다 이러한 interval()함수의 두 개의 원형들만 일단 알아보겠습니다! 첫 번째 원형은 일정 시간 (period)를 쉬었다가 데이터를 발행합니다. 두 번째 원형은 동작은 같고 최초 지연 시간(initialDelay)을 조절할 수 있죠. 보통 초기 지연 시간없이 바로 데이터를 발행하기 위해 (initialDelay =0) 사용합니다. 여기서 다소 주..
[RxJava] filter(), reduce() 1. filter() filter() 함수는 말 그대로 Observable에서 원하는 데이터만 걸러내는 함수입니다! 위의 그림처럼 filter()는 O만 통과를 하죠!! 비교적 간단한 함수라 바로 코드로 넘어가볼게요 val data = intArrayOf(1,2,3,4) val source = Observable.fromArray(data) .filter(number-> number % 2 ==0) source.subscribe(System.out::println) //result //2 //4 filter함수에 짝수만 걸러내는 로직을 구성했어요 ! 그랬더니 2,4 즉 짝수만 걸러져 나오는 것을 볼 수 있습니당 filter함수는 여기서....끝인데 너무 짧으니 비슷한 함수 몇개를 간단하게 알아볼게연 - ..
[RxJava] map(), flatMap() 1. map() map() 함수는 입력값을 어떤 함수에 넣어서 원하는 값으로 변환하는 함수입니다! String을 다른 형태(?)의 String으로 , Integer를 String이나 다른 객체로 변환할 수도 있습니다. map() 함수는 입력 데이터와 그것을 변환해줄 함수를 이어주는 중개업자가 있다고 생각하면 이해하기 쉬울 것 같아여 그림으로도 볼게요 👀 그림에서 원을 입력받아서 다이아몬드로 출력하고 있죠! 다음은 코드로 보시겠습니다. balls = arrayOf("1","2","3") soucre : Observable = Observable.fromArray(balls).map(myball-> myball+"!") source.subscribe(System.out::println) // result /..
[RxJava] Subject 클래스, ConnectableObservable 클래스 1. Subject 클래스 앞서 잠시 말씀드렸다시피 Subject클래스는 차가운 Observable을 뜨거운 Observable로 바꿔준다고 했었습니다. Subject 클래스의 특성은 Observable의 속성과 구독자의 속성이 모두 있다는 점입니다. Observable처럼 데이터를 발행할 수도 있고 구독자처럼 발행된 데이터를 바로 처리할 수도 있습니다. Subject클래스에는 AnsyncSubject, BehaviorSubject, PublishSubject, ReplaySubject 등이 있습니다!! 이것들을 알아봅시다! 1) AsyncSubject 클래스 AsyncSubject 클래스는 Observable에서 발행한 마지막 데이터를 얻어올 수 있는 Subject 클래스입니다. 완료되기 전 마지막 데..
[RxJava] Single 클래스, Maybe 클래스, 뜨거운 Observable 1. Single 클래스 Single클래스는 데이터를 무한하게 발행할 수 있는 Observable과 달리 오직 1개의 데이터만 발행하도록 한정합니다. 보통 결과가 유일한 서버 API를 호출할 때 유용하게 쓰이죠 중요한건 데이터 하나가 발행과 동시에 종료(onSuccess)된다는 점입니다. 라이프 사이클 관점에서 보면 onNext()와 onComplete() 함수가 onSuccess() 함수로 통합된 것입니다. 따라서 Single 클래스의 라이프 tkldzmf 함수는 onSuccess(T value) 함수와 onError() 함수로 구성됩니다 1) just() Single 클래스는 Observable과 거의 같은 방법으로 활용할 수 있어요! ( Single클래스가 Observable의 특수한 형태이기 때문..
[RxJava] Observable 클래스 Observable의 역할은 데이터 흐름에 맞게 알림을 보내 구독자가 데이터를 처리할 수 있도록 하는 것입니다! 책에 따르면 RxJava 프로그래밍은 Observable에서 시작해 Observable로 끝난다고 해도 과어인 아닐 정도로 중요한 개념이라고 하네요 따라서 이번 글에서는 Observable 클래스에 대해 알아보겠습니다!! 1. Observable 클래스 Observable은 옵저버 패턴을 구현합니다. 옵저버 패턴은 객체의 상태 변화를 관찰하는 관찰자(옵저버) 목록을 객체에 등록합니다. 그 후 상태 변화가 있을 때마다 메서드를 호출하여 객체가 직접 목록의 각 옵저버에게 변화를 알려줍니다. 라이프 사이클은 존재하지 않으며 보통 단일 함수를 통해 변화만 알립니다. 여기서 잠깐! Observable은..
[RxJava] Observable, just(), subscribe() 간단하게만 짚고 차차 다음 글들에서 구체적으로 설명할게여 Observable 클래스 : Observable 클래스는 데이터의 변화가 발생하는 데이터 소스입니다. 앞의 글을 보신 분은 아시겠지만 연간 매출액 예에서 개별적인 월간 매출액 데이터에 해당되는거죠 2020/10/15 - [gyub's 공부일기/Rxjava] - [Rxjava] 리액티브 프로그래밍이란? Rxjava란? just() : Observable 클래스의 just()함수는 가장 단순한 Observable 선언 방식입니다. Integer와 같은 래퍼 타입부터 Order같은 사용자 정의 클래스의 객체도 인자로 넣을 수 있습니다! subscribe() : subscribe() 함수는 Observable을 구독합니다.( 유튜브 구독! 그 느낌 맞아..