RxJava기록 - Single 클래스

dada·2022년 1월 3일
0

RxJava

목록 보기
4/12

  • Single 클래스는 오직 1개의 데이터만 발행
  • 데이터는 발행과 동시에 종료되며 OnNext()와 OnComplete() 함수가 onSuccess() 함수로 통합된 것

just() 함수

  • Single 객체를 생성
Single<String> source = Single.just("Hello Single");
source.subscribe(System.out::println);

Observable에서 Single 클래스

// 기존 Observable에서 Single 객체로 변환
Observable<String> source = Observable.just("Hello Single");
Single.fromObservable(source)
	.subscribe(System.out::println);

👉🏻 기존 Observable에서 첫 번째 값을 발행하면 onSuccess 이벤트 호출 후 종료

//single() 함수를 호출해 Single 객체 생성
Observable.just("Hello Single")
	.single("default item")
	.subscribe(System.out::println);

👉🏻 Observable.just()를 통해 생성된 Observable에 single() 함수를 호출

single() 함수는 default value를 인자로 갖고 Observable에서 값이 발행되지 않을 때 기본값 발행

//first() 함수를 호출해 Single 객체 생성
String[] colors = {"Red", "Blue", "Gold"};
Observable.fromArray(colors)
	.first("default value")
	.subscribe(System.out::println);

👉🏻 여러개의 데이터를 발행할 수 있는 Observable을 Single 객체로 변환

first() 함수를 호출하면 Observable이 Single객체로 변환

하나 이상의 데이터를 발행하더라도 첫 번째 데이터 발행 후 onSuccess 이벤트 발생

//Empty에서 Single 객체 생성하기
Observable.empty()
	.single("default value")
	.subscribe(System.out::println);

👉🏻Observable에서 값이 발행되지 않을 때 기본값을 갖는 Single객체로 변환

//take() 함수에서 Single 객체 생성
Observable.just(new Order("ORD-1"), new Order("ORD-2"))
	.take(1)
	.single(new Order("default order"))
	.subscribe(System.out::println);

👉🏻 String 뿐만 아니라 Order같은 사용자 정의 클래스도 Single에서 사용 가능

Single 클래스 에러가 발생하는 경우

Single<String> source = Observable
	.just("Hello Single", "Error").single("default item");
source.subscribe(System.out::println);

⇒ just() 함수에 여러 개 값이 들어가 있기 때문에 에러 발생

profile
기록하기

0개의 댓글