ReactiveX

3. RXJava ObservableOnSubscribe란 무엇일까?

코코넛딩 2023. 12. 5. 17:49

챗 지피티가 알려준 내용입니다. 틀린 내용이 있다면 댓글 달아주세요.

ObservableOnSubscribe의 기본적인 사용방법

  • 이 인터페이스는 Observable을 생성할 때 사용되며, 데이터 스트림의 생성및 방출 방식을 정의합니다.
  • Observable 인터페이스를 구현 하려면 subscribe 메서드를 오버라이드 해야합니다.
  • subscribe 메서드는 ObservableEmitter 타입의 인자를 받으며, 이를 통해 데이터를 방출하거나, 에러를 방출하거나, 스트림을 완료할 수 있습니다. 
Observable<String> observable = Observable.create(new ObservableOnSubscribe<String>() {
    @Override
    public void subscribe(ObservableEmitter<String> emitter) throws Exception {
        // 데이터를 방출합니다.
        emitter.onNext("Hello");
        emitter.onNext("RxJava");

        // 에러를 방출합니다.
        // emitter.onError(new Exception("Example Exception"));

        // 스트림을 완료합니다.
        emitter.onComplete();
    }
});

 

  • ObservableEmitter
    • Observable을 통해 데이터를 방출하는데 사용되는 인터페이스이다.
    • 이 인터페이스는 Observable.create() 메서드를 사용할 때 제공되며, 데이터 스트림을 동적으로 생성하고 관리하는 데 필요한 메소드들을 제공한다.
    • subscribe()
      • Observable에 구독할 때 호출된다.
    • ObservableEmitter의 주요 메소드
      • onNext(T value)
        • Observable이 데이터 항목을 방출할 때 사용된다.
        • 구독자들에게 전달될 데이터 항목을 인자로 받는다.
      • onError(Trowable error)
        • 에러가 발생했을 때 호출된다.
        • 이 메소드가 호출되면 더이상 onNext나 onComplete가 호출되지 않는다.
      • onComplete()
        • Observable이 데이터 방출을 완료했을 때 호출된다.
        • onComplete이후에는 더이상 onNext 호출이 없다.
Observable<String> observable = Observable.create(emitter -> {
    try {
        emitter.onNext("First Item");
        emitter.onNext("Second Item");
        emitter.onComplete();
    } catch (Throwable e) {
        emitter.onError(e);
    }
});