Skip to content
Ji Hoon Kim edited this page Jun 12, 2018 · 16 revisions

INDEX

misc

0-9

A

  • AsyncSubject : Observable 에서 어떤 데이타가 발행 되던 간에 마지막에 발행 된 데이타만 구독자에게 전달 됩니다.
  • amb : Observable amb(Iterable<? extends ObservableSource<? extends T>> sources), Iterable객체 파라미터로 받으며 그중에서 가장 먼저 데이터를 발행하는 Observable만 선택해서 값을 발행한다.
  • all : Observable에서 데이터가 발행될 때 주어진 조건에 100% 맞으면 true를 반환, 아닐경우 바로 false를 반환

B

  • BehaviorSubject : 생성시 기본값을 가지고 있으며, 구독 시 최근 값이나 기본값을 전달 하고, 이후 발생 되는 데이타를 전달 합니다.
  • buffer : 일정시간 or 지정된 개수만큼 데이터를 모아두었다가 한꺼번에 발행해준다.
  • blockingForEach : //TODO

C

  • 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가 됩니다.

D

  • Disposable interface : subscribe 에서 반환 되고, Observable 에 더이상 데이타를 발행 하지 않도록 구독을 해지 하는 함수 입니다. 보통 Observable Contract 에 따르면 onComplete 가 호출 되면 자동으로 dispose()를 호출해서 구독 관계를 해지 합니다. dispose()와 isDispose()를 포함 하고 있습니다.
  • defer : Observable defer(Callable<? extends Obvservable<? extends T>> supplier), 데이터 흐름 생성을 subscribe() 메서드를 호출할 때까지 미룰 수 있습니다. Callable 객체를 인자로 받기때문에 가능합니다. subscribe를 호출할 때마다 새로운 데이터 스트림을 생성하기 때문에 구독자가 다른 값을 발행 받습니다.
  • distinct : //TODO

E

F

  • 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

G

  • GroupedObservable : GroupedObservable<K, T> extends Observable , Key와 Value 쌍으로 그룹화된 Observable로 getKey() 메서드를 통해 그룹을 구별할 수 있다.
  • groupBy : Observable<GroupedObservable<K, T>> groupBy(Function<? super T, ? extends K> keySelector), 지정된 기준에 따라 GroupedObservable로 그룹화 한다.

H

I

  • interval : interval(long period, TimeUnit unit), 일정시간(period)을 쉬었다가 데이터를 발행합니다.
    interval(long initialDelay, long period, TimeUnit unit), 초기 지연 시간후에 첫번째 데이터를 발행하고 일정시간을 쉬었다가 데이터를 발행합니다. @SchedulerSupport(SchedulerSupport.COMPUTATION) 애너테이션이 정의되어 있는데 이는 현재 스레드가 아닌 계산을 위한 별도 스레드(스케줄러)에서 동작함을 의미합니다.
  • intervalRange : interval() 과 range()을 혼합한 기능으로 일정시간 간격으로 n부터 m개의 값을 발행합니다.

J

  • just : Observable.Just(T!, ... ) 주어진 아이템들을 발행 해줍니다. 원형에서 볼 수 있듯이 null 을 파라미터로 줄 수 없습니다. 단 Rxjava 에서 인자는 10개까지만 가능하다.

K

L

  • last : last(default) 마지막 값 을 가져옵니다. 만약 값없이 완료 되면 기본값을 반환합니다.

M

  • map : map(Function<? super T, ? extends R> mapper) , 전달 된 데이타에 인자로 입력 된 함수를 적용한다.
  • Maybe : 하나의 원소만 발행 가능한 Observable의 특수한 형태 입니다. 하지만 Single 이 하나를 발행 하고 바로 종료 되는 것과 다르게 Maybe는 하나도 발행 되지 않고 종료 하는 것도 가능 합니다. 그래서 OnSuccess, OnComplete, onError 세가지 이벤트를 가집니다.
  • merge : 최신 데이터 여부와 상관없이 각 Observable에서 발행하는 데이터를 그대로 출력합니다.

N

O

  • Observable : 데이타가 발생 하는 클래스. 각종 생성 함수 들을 가지고 있다.

P

  • PublishSubject : 구독자가 subscribe 을 하면 그 이후 발생 된 데이타만 전달 합니다.

Q

R

  • 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을 흘려보내고 지정된 시간후에 재시도합니다.

S

  • 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() 후에 맨 마지막 데이터도 발행합니다.

T

  • take : Observable take(long count) : 앞에서 부터 몇개만 취득 한다.
  • taskLast : Observable takeLast(int count) : 뒤에서 부터 N개 만 취득한다.
  • timer : 일정시간이 지난 후 한 번만 실행하는 함수입니다.
  • takeUntil : 다른 Observable에서 데이터가 발행되기 전까지만 현재 Observable을 채택합니다. 인자로 받는 Observable에서 어떤 값을 발행하면 현재 Observable의 데이터 발행을 중단하고 즉시 완료합니다.

U

  • UnicastSubject : 오로지 하나의 구독자에게만 데이타를 발행 하는 Subject 첫번째 구독자 이후 나머지 구독자 들에게는 에러를 배포 한다. (동작 확인필요)

V

W

  • window : //TODO

X

Y

Z

  • zip : 입력 Observable에서 데이터를 모두 새로 발행했을 때 그것을 합해줍니다.
  • zipWith : zip 함수와 동일하지만 입력 Observable을 다양한 함수와 조합하면서 호출할 수 있습니다.

Clone this wiki locally