전체 글256 RxJava (10) - Observable 디버깅하기 Observable 디버깅 연산자데이터 스트림에서는 다양한 이벤트가 발생한다. 이러한 흐름이 어떻게 흘러가고 있는지 손쉽게 파악할 수 있도록 다양한 연산자들을 제공해준다. doOnEach() 메소드이 연산자는, 데이터가 발행되기 직전에 Notification라는 녀석을 통해 발행되는 데이터를 콜백 형태로 확인할 수 있도록 해준다. 아래와 같은 프로퍼티를 지원한다.fun main() { Observable.just(1, 2) .doOnEach { notification -> println("data? " + notification.value) println("isOnNext? " + notification.isOnNext) pri.. 2023. 6. 18. RxJava (9) - Observable 오류 처리하기 Observable 오류 처리하기데이터가 발행되다 보면, 은연중에 오류가 발행할 수도 있는 것이다. 그런데 보통 데이터 스트림에서 오류가 발생하면, 즉시 데이터 스트림이 종료되기 때문에 따로 조치를 해주어야 하는 상황이 있을 수 있다. 이번 포스팅에선 Observable에서 발생할 수 있는 에러를 핸들링하는 방법 몇 가지를 알아보자. onError() Consumer 등록하기이전에 Observable에서 에러가 발생하면 Emitter.onError() 이벤트를 발행하는 것을 배운적 있다. subscribe()안에 onNext() Consumer 뿐만 아니라 onError() Consumer를 넣어줌으로써, onError()를 구독할 수 있다. 가장 일반적인 에러 핸들링 기법이다.fun main() { .. 2023. 6. 18. RxJava (8) - Observable 결합하기 Observable 결합하기여러 개의 Observable 데이터 스트림을 하나의 Observable로 만들 수 있다. 여러 데이터를 이용하여 가공해서 사용하는 경우, 혹은 HTTP 통신의 응답들을 한 번에 묶어서 받고 싶은 경우 등에 사용하게 된다. 이번 포스팅에선 이러한 동작을 하는 Observable 결합 연산자들 중 몇 가지를 알아보고자 한다. 설명만 들어서는 헷갈릴 수 있는 파트다. 마블 다이어그램과 예제 소스코드를 함께 보며 천천히 이해해보자. conbineLast() 메소드해당 메소드는 두 Observable 중 하나에서 데이터를 발행하려고 할 때, 나머지 한 Observable이 가장 최근에 발행한 데이터를 가져와 지정해준 함수를 거쳐 새로운 하나의 데이터로 발행하게 한다.fun main(.. 2023. 6. 18. RxJava (7) - Observable 필터링하기 Observable 필터링하기필터링 연산자는 Observable이 뱉는 데이터들을 어떤 기준에 의해 거른 후 발행하도록 한다. 이번 포스팅에선 Observable 필터링 연산자 중 자주 사용되는 몇 가지를 알아보며, 개념을 익혀보도록 하자. debounce() 메소드이 녀석은 특정 시간동안 더 이상 데이터가 발행되지 않을 때에 데이터를 발행하는 연산자이다.예를 들어 검색창 입력필드에 사용자가 검색어를 입력할 때 검색버튼 누르지 않아도 검색이 되는 기능을 구현한다고 치자. 이 때 검색어가 변화하는 대로 계속하여 서버에 쿼리 (혹은 DB 쿼리)를 보내게 된다면 리소스 낭비이다.왜냐하면 '사과'라는 키워드를 완성하기 위해 사용자는 'ㅅ -> 사 -> 사ㄱ -> 사고 -> 사과'의 과정을 거치기 때문에 총 5번.. 2023. 6. 18. RxJava (6) - Observable 변형하기 Observable 변형해보기observable을 변형한다 함은, 데이터를 특정 형태로 변형하여 발생하는 것이다. 어떤 비동기 기능을 개발할 때 상황에 따라 알맞은 형태로 반환받고 싶어질 때가 있다. 이럴 때를 대비하여 이번 포스팅에서는, Observable을 변형하는 다양한 연산자들에 대해 알아보자. buffer() 메소드우리는 버퍼라는 단어 자체를 많이 본 적이 있고, 대략 어떤 역할을 하는 녀석인지도 알고 있다. buffer() 메소드 역시 비슷한 동작을 하게 된다. 아래 코드를 통해 동작을 이해해보자.fun main() { Observable.range(0, 8) .buffer(3) .subscribe { println("마! 이게 버퍼다!") .. 2023. 6. 18. RxJava (5) - Cold Observable vs Hot Observable Cold vs Hot ObservableObservable은 Cold Observable과 Hot Observable로 나눌 수 있는 차이는 요약하자면 이렇다.Cold Observable: 생성된 이후 누군가 구독을 요청했을 때 '처음부터' 데이터 발행Hot Observable: 데이터 발행 시작한 이후 모든 구독자들에게 '같은' 데이터 발행 Cold OverservableCold Observable은 일반적인 옵저버 형태로, 누가 구독해주지 않으면 데이터를 배출해주지 않는 것을 원칙으로 한다.즉, Observable에 '구독' (subscribe)을 요청했을 때 데이터를 발행하기 시작한다. 즉, 누군가 구독을 하지 않으면 데이터를 발행하지 않는다. 또한 데이터를 처음부터 끝까지 발행하는 것을 보장한다... 2023. 6. 18. 이전 1 ··· 38 39 40 41 42 43 다음