Operator

김영민·2022년 3월 18일
0

1. ignoreElements

  • next 이벤트를 무시.
  • onCompleted, onError 이벤트는 가능.
let 취침모드 = PublishSubject<String>()

취침모드
    .ignoreElements()
    .subscribe{_ in
        print("햇빛")
    }
    .disposed(by: disposeBag)

취침모드.onNext("기상")
취침모드.onNext("기상")
취침모드.onNext("기상")

//출력
//(아무것도 출력되지 않음)

2. elementAt

  • 특정 index를 지칭하여 방출
let disposeBag = DisposeBag()

let 두번울면깨는사람 = PublishSubject<String>()

두번울면깨는사람
    .element(at: 2)
    .subscribe(
			onNext:{
            print($0)
        })
    .disposed(by: disposeBag)

두번울면깨는사람.onNext("기상0") //index 0
두번울면깨는사람.onNext("기상1") //index 1
두번울면깨는사람.onNext("기상2") //index 2
두번울면깨는사람.onNext("기상3") //index 3

//출력
//기상2

3. filter

  • 말 그대로 필터링
let disposeBag = DisposeBag()

Observable.of(1,2,3,4,5,6,7,8,9)
    .filter{ num in
        num % 2 == 0
    }
    .subscribe(
        onNext:{
            print($0)
        }).disposed(by: disposeBag)

//출력
//2 4 6 8 

4. Skip, SkipWhile, SkipUntil

Skip

  • 처음부터 몇 개의 요소를 skip할 지 써서 skip
Observable.of(1,2,3,4,5,6,7,8,9)
    .skip(3)
    .subscribe(
        onNext:{
            print($0)
        }).disposed(by: disposeBag)
//출력
// 4 5 6 7 8 9

SkipWhile

  • 어떤 요소를 skip하지 않을 때까지 (filter와 반대)
  • 어떠한 logic이 false일 때부터 방출 (true면 skip)
let disposeBag = DisposeBag()

Observable.of(1,2,3,4,5,6,7,8,9)
    .skip(while: {
        $0 != 6
    })
    .subscribe(
        onNext:{
            print($0)
        })
    .disposed(by: disposeBag)
//출력
//6 7 8 9 

SkipUntil

  • until 안에 다른 observable을 호출해야함
  • 현재 observable이 until 안의 observable이 onNext 되기 전까지 skip
let disposeBag = DisposeBag()

let 손님 = PublishSubject<String>()
let 문여는시간 = PublishSubject<String>()

손님
    .skip(until: 문여는시간)
    .subscribe(onNext: {
      print($0)
    })
    .disposed(by: disposeBag)

손님.onNext("1")
손님.onNext("2")

문여는시간.onNext("시작")
손님.onNext("3")

//출력
//3

Take, TakeWhile,TakeUntil

Take

  • skip과 반대
  • .take(3)이라고 하면 처음부터 3개를 방출. 그 후론 무시

TakeWhile

  • skipWhile과 반대
  • 어떠한 logic이 false이기 이전만 방출 (true면 방출)

TakeUntil

  • skipUntil과 반대
  • 현재 observable이 until 안의 observable이 onNext 되기 전까지 take

Enumerated

  • index와 element로 만들어줌
let disposeBag = DisposeBag()

Observable.of("A","B","C","D","E")
    .enumerated()
    .take(while: {index,_ in
        index != 3
    }).subscribe(onNext:{
        print($0)
    }).disposed(by: disposeBag)

//출력
//(index: 0, element: "A")
//(index: 1, element: "B")
//(index: 2, element: "C")

distinctUntilChanged

  • 연속된 중복된 값 삭제
  • 연속된 것 중 뒤에 것 삭제

TransformingOperator

Transforming Operator

→ 바꿔주는 연산자



Combining Operator

Combining Operator

→ 결합 연산자


RxCocoa

RxCocoa

0개의 댓글