반응형
개인적으로 공부하면서 정리한 내용입니다. 모든 내용을 포함하지 않고 1차로 전체적인 내용 공부를 먼저 하고, 2차로 다시 정리한 내용이기 때문에 누락된 개념들이 많습니다.
생성 연산자
데이터의 흐름을 만듦
interval() 함수
- 일정 시간 간격으로 데이터 흐름을 생성함.
- 주어진 시간 간격으로 Long 객체를 발행함.
- public static Observable<Long> interval(long period, TimeUnit unit) -> 일정 시간 쉬었다가 데이터를 발행함.
- public static Observable<Long> interval(long initialDelay, long period, TimeUnit unit) -> 동작 시간은 같고 최초 지연 시간을 조절할 수 있음. 초기 지연 시간 없이 바로 데이터를 발행하기 위해 사용함.
- 영원히 지속 실행되기 때문에 폴링 용도로 많이 사용함.
timer() 함수
- 한 번만 실행하는 함수.
- 일정 시간이 지난 후 한 개의 데이터를 발행하고 onComplete() 이벤트 발생.
- 현재 스레드가 아닌 계산 스케줄러에서 실행됨.
range() 함수
- 주어진 값부터 m개의 integer 객체를 발행함.
- interval(), timer() 함수는 Long객체를 발행했지만 range() 함수는 Integer 객체를 발행함.
- 현재 스레드에서 실행함.
- 반복문을 대체할 수 있음.
intervalRange() 함수
- interval()과 range()를 혼합해놓음.
- interval() 함수처럼 일정한 시간 간격으로 값을 출력하지만 range() 함수처럼 시작 숫자로부터 m개만큼의 값만 생성하고 onComplete 이벤트를 발생함. -> interval() 계속 데이터 흐름을 발행하지 않음.
defer() 함수
- 데이터 흐름 생성을 구독자가 subscribe() 함수를 호출할 때까지 미룰 수 있음. (이때 새로운 Observable이 생성됨)
- subscrive() 함수를 호출할 때의 상황을 반영하여 데이터 흐름의 생성을 지연하는 효과를 보여줌.
- 내부적으로 구독자가 subscibe()를 호출하면 그 때 supplier의 call() 메서드를 호출함.
repeat() 함수
- 서버가 잘 살아있는지 확인이 필요할 때 사용.
- 인자를 입력하지 않으면 영원히 반복 실행.
- repeat(N)을 사용하면 N번 만큼만 반복 실행 됨.
변환 연산자
만들어진 데이터 흐름을 원하는 대로 변형할 수 있는 변환 연산자.
concatMap() 함수
- flatMap() 함수는 인터리빙이 나타날 수 있지만 concatMap() 함수는 먼저 들어온 데이터 순서대로 처리해서 결과를 낼 수 있도록 보장함.
switchMap() 함수
- 순서를 보장하기 위해 기존에 진행 중이던 작업을 바로 중단함.
- 여러 개의 값이 발행되었을 때 마지막에 들어온 값만 처리하고 싶을 때 사용함. 마지막 데이터의 처리는 보장됨.
groupBy() 함수
- 어떤 기준으로 단일 Observable을 여러 개로 이루어진 Observable그룹으로 만듦.
scan() 함수
- reduce() 함수와 비슷
- 실행할 때마다 입력값에 맞는 중간 결과 및 최종 결과를 구독자에게 발행함.
결합 연산자
여러개의 Observable을 조합하여 활용함.
zip() 함수
- 각각의 Observable을 모두 활용해 2개 혹은 그 이상의 Observable을 결합함.
- 각각의 Observable에서 모두 데이터를 발행해야 결합할 수 있음. 그 전까지는 발행을 기다림.
combineLatest() 함수
- 2개 이상의 Observable을 기반으로 Observable 각각의 값이 변경되었을 때 갱신해주는 함수.
- 마지막 인자로 들어가는 combiner가 각 Observable을 결합해서 결과를 만들어 줌.
merge() 함수
- 단순 결합 함수.
- 어느 것이든 업 스트림에서 먼저 입력되는 데이터를 그대로 발행함.
concat() 함수
- 2개 이상의 Observable을 이어 붙여주는 함수.
- 첫 번째 Observable에 onComplete 이벤트가 발생해야 두 번째 Observable을 구독함.
- 첫 번째에서 onComplete 이벤트가 발생하지 않으면 두 번째 Observable은 계속 대기 하기 때문에 잠재적인 메모리 누수 위험이 있음.
조건 연산자
Observable의 흐름을 제어하는 역할.
지금까지의 흐름을 어떻게 제어할 것인지에 초점이 있음.
amb() 함수
- 가장 먼저 데이터를 발행하는 Observable을 선택. 이후 나머지 데이터는 모두 무시.
takeUntil() 함수
- take() 함수에 조건을 설정할 수 있음.
- 인자로 받은 Observable에서 어떤 값을 발행하면 현재 Observable의 데이터 발행을 중단하고 onComplete 발생
skipUntil() 함수
- Observable에서 데이터를 발행할 때까지 값을 건너 뒴.
- other Observable에서 화살표가 나올 때까지 값을 발행하다 값을 발행하는 순간부터 원래 Observable에서 값을 발행하기 시작.
all() 함수
- 주어진 조건에 무조건 맞을 때만 true 값을 발행하고 조건에 맞지 않는 데이터가 발행되면 false를 발행.
수학연산자
count()
max()
min()
sum()
average()
delay() 함수
- 유틸리티 연산자로서 보조 역할을 함.
- 인자로 전달 받는 time과 시간단위 만큼 입력받은 Observable의 데이터 발행을 지연 시켜줌.
timeinterval() 함수
- 어떤 값을 발행했을 때 이 전 값을 발행한 이후 얼마나 시간이 흘렀는지를 알려 줌.
반응형
'Study' 카테고리의 다른 글
영국 런던에서 열린 ASOS 기술 세미나 참여 후기(ft. Londroid) (0) | 2020.02.24 |
---|---|
RxJava 공부 정리 - 2 (0) | 2019.07.17 |