-
Notifications
You must be signed in to change notification settings - Fork 1
index
Ji Hoon Kim edited this page Jun 12, 2018
·
16 revisions
- AsyncSubject : Observable 에서 어떤 데이타가 발행 되던 간에 마지막에 발행 된 데이타만 구독자에게 전달 됩니다.
- amb : Observable amb(Iterable<? extends ObservableSource<? extends T>> sources), Iterable객체 파라미터로 받으며 그중에서 가장 먼저 데이터를 발행하는 Observable만 선택해서 값을 발행한다.
- all : Observable에서 데이터가 발행될 때 주어진 조건에 100% 맞으면 true를 반환, 아닐경우 바로 false를 반환
- BehaviorSubject : 생성시 기본값을 가지고 있으며, 구독 시 최근 값이나 기본값을 전달 하고, 이후 발생 되는 데이타를 전달 합니다.
- buffer : 일정시간 or 지정된 개수만큼 데이터를 모아두었다가 한꺼번에 발행해준다.
- blockingForEach : //TODO
- concat : 입력된 Observable을 Observable 단위로 이어 붙여줍니다.
- concatWith : concat처럼 현재 Observable에 새로운 Observable을 결합할 수 있다. 차이점이 하나 있는데 concat은 Observable 2개를 인자로 받지만 concatWith은 현재 Observable에 새로운 Observable을 결합하는 방식이므로 Observable 인자를 하나 받는다.
- ConnectableObservable : .publish()로 생성 되며, 구독자가 subscribe 을 해도 바로 데이타를 발생 시키지 않고. connect()를 호출 한 이후 부터 데이타를 발행 합니다.
- create : Observable.create{emitter : ObservableEmitter -> {}} emitter의 OnNext나 onError, onComplete 를 직접 호출 하여 데이타를 발생 할 수 있는 생성 함 수 입니다.
- combineLastest : 처음에 각 Observable에서 데이터를 발행한 후에는 어디서 값을 발행하던 최신 값으로 갱신합니다.
- concatMap : Observable concatMap(Function<? super T, ? extends ObservableSource<? extends R>> mapper), flatMap과 다르게 먼저 들어온 Observable을 순서대로 처리해서 결과를 내도록 보장해줍니다. A에서 A1, A2, A3을 발행하고, B에서 B1, B2, B3을 발행한다면, 결과는 A1, A2, A3, B1, B2, B3가 됩니다.
- Disposable interface : subscribe 에서 반환 되고, Observable 에 더이상 데이타를 발행 하지 않도록 구독을 해지 하는 함수 입니다. 보통 Observable Contract 에 따르면 onComplete 가 호출 되면 자동으로 dispose()를 호출해서 구독 관계를 해지 합니다. dispose()와 isDispose()를 포함 하고 있습니다.
- defer : Observable defer(Callable<? extends Obvservable<? extends T>> supplier), 데이터 흐름 생성을 subscribe() 메서드를 호출할 때까지 미룰 수 있습니다. Callable 객체를 인자로 받기때문에 가능합니다. subscribe를 호출할 때마다 새로운 데이터 스트림을 생성하기 때문에 구독자가 다른 값을 발행 받습니다.
- distinct : //TODO
- filter : Observable filter(Predicate<? super T> predicate) , filter에 전달 된 함수가 true 를 리턴하는데이타만 배포 됩니다.
- first : first(default) Observable 의 첫 번째 값을 가져옴. 만약 해당 값이 없으면 기본값을 반환함.
-
flatMap : flatMap(Function<? super T, ? extends ObservableSource<? extends R>> mapper) , map 과 동일하지만 리턴 값이 Observable 입니다. 다만 이후에 해당 Observable 이 발행 되는 것이 아니라 그 Observable 이 배포하는 데이타들이 merge 되어 배포 됩니다.
- flatMap 과 비슷한 동작을 하는 함수로 concatMap이 있는데 다만 flatMap은 merge 되고 concatMap은 concat 됩니다. 이 두 경우 의 차이는 각 Observable A 와 B 가 리턴 될 때. A에서 발행된 데이터 A1, A2, A3 가 B에서 발행된 데이타 B1,B2,B3가 있을 때. concat은 A3가 배포된 이후 B1이 배포되는 것을 보장 하나 merge 는 보장 하지 않 습니다.
- fromArray : Observable.fromArray(T...) 배열의 원소를 발행 해주는 함수 입니다. T... 형태의 인자를 받기 때문에 여러개의 인자를 전달 할 수 있지만 여러개의 배열을 전달 하면 배열의 개별 인자가 아닌 각각의 배열을 발행 합니다.
- fromCallable : //TODO
- fromFuture : //TODO
- fromPublisher : //TODO
- fromIterable : Observable.fromIterable(Iterable<? extends T> source) Iterable 인터페이스를 구현한 객체의 내부 원소를 발행 하여 줍니다.
- 코틀린의 Array는 fromArray를 쓰지 않고 이 fromIterable을 쓰는데 ar.iterator()를 쓰지 않고. Observable.fromIterable(ar.toList()) 을 씁니다.
- 코틀린의 List는 역시 fromIterable 을 쓰는데 역시 Iterator()를 쓰지 않고. fromIterable(li) 를 사용합니다.
- Flowable : //TODO
- GroupedObservable : GroupedObservable<K, T> extends Observable , Key와 Value 쌍으로 그룹화된 Observable로 getKey() 메서드를 통해 그룹을 구별할 수 있다.
- groupBy : Observable<GroupedObservable<K, T>> groupBy(Function<? super T, ? extends K> keySelector), 지정된 기준에 따라 GroupedObservable로 그룹화 한다.
- interval : interval(long period, TimeUnit unit), 일정시간(period)을 쉬었다가 데이터를 발행합니다.
interval(long initialDelay, long period, TimeUnit unit), 초기 지연 시간후에 첫번째 데이터를 발행하고 일정시간을 쉬었다가 데이터를 발행합니다.@SchedulerSupport(SchedulerSupport.COMPUTATION)애너테이션이 정의되어 있는데 이는 현재 스레드가 아닌 계산을 위한 별도 스레드(스케줄러)에서 동작함을 의미합니다. - intervalRange : interval() 과 range()을 혼합한 기능으로 일정시간 간격으로 n부터 m개의 값을 발행합니다.
- just : Observable.Just(T!, ... ) 주어진 아이템들을 발행 해줍니다. 원형에서 볼 수 있듯이 null 을 파라미터로 줄 수 없습니다. 단 Rxjava 에서 인자는 10개까지만 가능하다.
- last : last(default) 마지막 값 을 가져옵니다. 만약 값없이 완료 되면 기본값을 반환합니다.
- map : map(Function<? super T, ? extends R> mapper) , 전달 된 데이타에 인자로 입력 된 함수를 적용한다.
- Maybe : 하나의 원소만 발행 가능한 Observable의 특수한 형태 입니다. 하지만 Single 이 하나를 발행 하고 바로 종료 되는 것과 다르게 Maybe는 하나도 발행 되지 않고 종료 하는 것도 가능 합니다. 그래서 OnSuccess, OnComplete, onError 세가지 이벤트를 가집니다.
- merge : 최신 데이터 여부와 상관없이 각 Observable에서 발행하는 데이터를 그대로 출력합니다.
- Observable : 데이타가 발생 하는 클래스. 각종 생성 함수 들을 가지고 있다.
- PublishSubject : 구독자가 subscribe 을 하면 그 이후 발생 된 데이타만 전달 합니다.
- reduce : Maybe reduce(BiFunction<T, T, T> reducer) , 인자로 받은 reducer를 이용하여 발행된 데이타를 모두 합친 후 반환합니다. 리듀서의 첫번재 적용에서는 첫번째와 두번째 배포 데이타를 사용하며 세번째 부터는 첫번째로 앞선 결과값을 두번째로는 다음 배포 데이타를 전달 합니다.
- ReplaySubject : 구독자가 새로 생기면 발행 된 데이타를 처음부터 다시 발행 합니다. 따라서 메모리 누수를 주의 해야 합니다.
- range : 주어진 n부터 m개의 Integer 객체를 발행합니다. interval, timer와 다르게 Long 타입이 아닌 Integer 타입 발행하는 것과 다른 스레드에서 실행하지 않는다는 점을 기억.
- repeat : Observable에서 발행한 값을 무한히 반복해서 발행합니다. repeat 메서드에 인자를 입력하지 않으면 Long.MAX_VALUE (2^63 - 1) 번만큼 호출합니다. repeat(N)로 입력하면 N번만큼 반복 실행합니다.
- retry : 지정된 횟수만큼 재시도합니다
- retryUntil : 조건에 만족할 때 까지 재시도합니다.
- retryWhen : 에러 발생시 Throwable을 흘려보내고 지정된 시간후에 재시도합니다.
- Single : 단일 원소만 말행하고 종료되는 Observable 의 특수한 형태 입니다. 단 Observable 의 하위 구현체 거나 한건 아닙니다. 만약 두번째 원소가 발행 된다면. IllegalArgumentException 이 발생 합니다.
- Subject : 차가운 Observable 을 뜨거운 Observable 로 변환 하여 줍니다. Observable 을 상속 하고 Observer 를 구현하여 Observable 도로 구독자로도 사용 될 수 있습니다.
- skip : 최초 N 개 값을 건너뛰고 그 다음 부터 배포함니다.
- skipLast : 마지마구 N 개 값을 건너뛰고 그다음 부터 배포합니다.
- subscribe : Observable 을 구독합니다. Disposable 을 반환합니다.
- subscribe()
- subscribe(Consumer<? super T> onNext)
- subscribe(Consumer<? super T> onNext,Consumer<? super Throwable>onError)
- subscribe(Consumer<? super T> onNext,Consumer<? super Throwable>onError, Action onComplete)
- subscribe(Consumer<? super T> onNext,Consumer<? super Throwable>onError, Action onComplete, Consumer<? super Disposable> onSubscribe)
- scan : reduce와 역할은 같으나 중간 누적 데이터를 다음 스트림으로 발행한다.
- switchMap : Observable concatMap(Function<? super T, ? extends ObservableSource<? extends R>> mapper), 데이터를 발행 중 새로운 데이터가 들어오면 진행 중이던 작업을 바로 중단하고 새로운 데이터로 발행을 시작합니다. 여러 개의 값이 발행되었을 때 마지막에 들어온 값만 처리하고 싶을 때 사용합니다. 예를들어 센서 등의 값을 얻어와서 동적으로 처리하는 경우에 매우 유용합니다.
- skipUntil : takeUntil 함수와 반대로 다른 Observable에서 데이터가 발행하기 전까지 현재 Observable을 발행하지 않고 건너뛰다가 다른 observable에서 데이터를 발행하는 순간부터 현재 Observable의 데이터를 발행합니다.
- share : ConnectableObservable 클래스의 publish() 와 refCount()를 사용하여 cold Observable을 hot Observable로 변환시켜줍니다.
- sample : 특정 시간 간격마다 가장 최신의 데이터만 발행하고 나머지는 무시합니다. emitLast = true로 주는 경우 onComplete() 후에 맨 마지막 데이터도 발행합니다.
- take : Observable take(long count) : 앞에서 부터 몇개만 취득 한다.
- taskLast : Observable takeLast(int count) : 뒤에서 부터 N개 만 취득한다.
- timer : 일정시간이 지난 후 한 번만 실행하는 함수입니다.
- takeUntil : 다른 Observable에서 데이터가 발행되기 전까지만 현재 Observable을 채택합니다. 인자로 받는 Observable에서 어떤 값을 발행하면 현재 Observable의 데이터 발행을 중단하고 즉시 완료합니다.
- UnicastSubject : 오로지 하나의 구독자에게만 데이타를 발행 하는 Subject 첫번째 구독자 이후 나머지 구독자 들에게는 에러를 배포 한다. (동작 확인필요)
- window : //TODO
- zip : 입력 Observable에서 데이터를 모두 새로 발행했을 때 그것을 합해줍니다.
- zipWith : zip 함수와 동일하지만 입력 Observable을 다양한 함수와 조합하면서 호출할 수 있습니다.