일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 러브자그레브
- 푸켓여행
- 대한항공
- 강릉
- SwiftUI #Skeleton #데이터갱신
- cocoapod
- 연금저축펀드
- Concurrency #Swift #Combine
- 라이브러리
- 공기먹는다이버스
- 스플리트
- 스쿠버다이빙
- Swift #Concurrency #쓰레드
- 스페인여행
- Device 등록
- Cocoapods #PrivateRepo #SpecRepo
- 도심공항
- 크로아티아
- swiftUI
- xcode
- 괌 자유여행
- 시밀란
- 아시아나
- 그라나다
- 러브스플리트
- 지팍스페인
- 리브어보드
- 세비야
- Gradle
- 스페인광장
- Today
- Total
JEP's Diary
리액티브 연산자1 본문
리액티브 연산자1
리액티브 연산자는 부수효과가 없는 순수함수이다.
1. 리액티브 연산자 분류
: 생성 연산자
- Observable, Single 클래스 등으로 데이터의 흐름을 만들어내는 함수이다.
create(), just(), fromArray(), interval(), range(), timer(), defer() 등
: 변환 연산자
- 어떤 입력을 받아서 원하는 출력 결과를 내는 함수이다.
map(), flatMap()등
: 필터 연산자
- 입력 데이터 중에서 원하는 데이머나 걸러내는 함수이다.
filter(), first(), take()등
: 합성 연산자
- 생성, 변환, 필터 연산자가 주로 단일 Observable을 다룬다면 합성 연산자는 여러 Observable을 조합하는 역할을 하는 함수이다.
: 오류 처리 연산자
- onErrorReturn(), onErrorResumeNext(), retry()등
: 유틸리티 연산자
- subscribeOn(), onbserveOn()등 비동기프로그래밍을 지원한다.
: 조건 연산자
- Observable의 흐름을 제어하는 역할을 한다.
: 수학과 집합형 연산자
- 수학 함수와 연관있는 연산자이다.
: 배압 연산자
- 배압 이슈에 대응하는 연산자이다.
2.map()함수
: 입력값을 어떤 함수에 넣어서 원하는 값으로 변환하는 함수이다. String->String, String->Integer나 다른 객체로 변환 할 수 있다.
: map()함수의원형
pubic final <R> Observable<R> map(Function<? super T,? extends R>mapper)
3.flatMap()함수
: map() 함수를 좀 더 발전시킨 함수이다. map()함수는 원하는 입력값을 어떤 함수에 넣어서 변환 할 수 있는 일대일 함수이다. flatMap()함수는 똑같이 함수에 넣더라도 결과가 Observable로 나온다. 즉 map()함수가 일대일 함수라면 flapMap()함수는 일대다 혹은 일대일 Observable함수이다.
4.filter()함수
: Observable에서 원하는 데이터만 걸러내는 역할을 한다. 필요없는 데이터는 제거하고 오직 관심 있는 데이터만 filter()함수를 통과하게된다.
: first(default)함수 : Observable의 첫번째 값을 필터함. 만약 값없이 완료되면 대신 기본값을 리턴함
: last(default)함수 : Observable의 마지막 값을 필터함. 만약 값없이 완료되면 대신 기본값을 리턴함
: take(N)함수 : 최초 N개 값만 가져옴
: takeLast(N)함수 : 마지막 N개 값만 필터함
: skip(N)함수 : 최초 N개 값을 건너뜀
: skipLast(N)함수 : 마지막 N개 값을 건너뜀
5.reduce()함수
: 발행한 데이터를 모두 사용하여 어떤 최종 결과 데이터를 합성할 때 활용한다. map()/ filter()/ recude() 패턴을 이루는 마지막 필수 함수이다.
: reduce() 함수를 호출하면 인자로 넘긴 람다 표현식에 의해 결과 없이 완료될 수도 있다. 따라서 Observable이 아니라 Maybe 객체로 리턴된다.
: redece()함수의 원형
public final Maybe<T> reduce(BiFunction<T,T,T> reducer)
* RxJava의 람다 표현식은 세가지 제네릭 함수형 인터페이스 중 하나로 나타낸다.
: Predicate<T>
- boolean test(T t) 메서드를 포함한다. t값을 받아서 참이나 거짓을 반환한다.
: Consumer<T>
- void accept(T t) 메서드를 포함한다. t값을 받아서 처리한다. 반환값을 없다.
: Function<T, R>
- R apply(T t) 메서드를 포함한다. t값을 받아서 결과를 반환한다.
참고 : RxJava프로그래밍 (리액티브 프로그래밍 기초부터 RxAndroid까지 한 번에)
'Development > Reactive' 카테고리의 다른 글
스케줄러 (0) | 2018.07.28 |
---|---|
리액티브 연산자2 (0) | 2018.07.28 |
Observable 알고가기 (0) | 2018.07.25 |
리액티브 프로그래밍 개념 (0) | 2018.07.24 |