본문 바로가기
iOS/RxSwift

기본

by 패쓰킴 2023. 11. 23.
728x90
  • Observable: 이벤트를 비동기적으로 처리하고 실시간 관찰
  • Operator: Observable에 의해 방출되는 이벤트를 변환,처리
  • Schedulers: DispatchQueue와 같음

 

  • Subscribe: 생성된 Observable을 실행 시킨다.
let observable = Observable.of(1,2,3)
observable.subscribe({ event in 
  print(event)
})
/* Prints:
 	 next(1)
 	 next(2)
 	 next(3)
 	 completed
*/

위 코드를 다음과 같이 사용할 수도 있다.

let observable = Observable.of(1,2,3)
    .subscribe(onNext: { num in
        print(num)
    }, onCompleted: {
        print("completed")
    })
  • Disposing: subscribe와 반대로 Observable의 구독(실행)을 취소시킨다.
let observable = Observable.of(1, 2, 3)
let subscription = observable.subscribe({ num in
     print(num)
 })

 subscription.dispose()

// 여러 Observable 취소 ->
// Disposable은 DisposeBag instance 의 deinit() 이 실행될 때 dispose()를 호출
let disposeBag = DisposeBag()
Observable.of(1, 2, 3)
   .subscribe {
       print($0)
   }
   .disposed(by: disposeBag)

 

  • Create: Observable을 create로 만들 수 있다.여기서 .next(“2”) 의 경우 onComplete 이후이기 때문에 방출되지 않는다.
  • .create는 escaping 클로저로 AnyObserver 를 인자로 받아 Disposable을 반환
let disposeBag = DisposeBag()
     
Observable<String>.create({ (observer) -> Disposable in
   observer.onNext("1")
   observer.onCompleted()
   observer.onNext("2")
   return Disposables.create()
}).subscribe(onNext: { print($0) },
             onError: { print($0) },
             onCompleted: { print("Completed") },
             onDisposed: { print("Disposed") })
.disposed(by: disposeBag)

 /* Prints:
  1
  Completed
  Disposed
 */

 

  • Subject: 실시간으로 Observable에 값을 추가하고 Subscriber에게 방출해줌
    • PublishSubject: subscribe 후 이벤트 방출
    • BehaviorSubject: publishSubject와 달리 초기 이벤트를 가지며, subscribe될 때 가장 최신의 next 이벤트 전달
    • RelaySubject: buffersize개의 이벤트를 subscribe될 때 모두 방출

 

  • throttle: 처음 이벤트가 방출될 때 타이머로 지정한 시간동안 방출하지 않는다
    • 주로 버튼의 중복 입력을 방지하는데 사용된다.

 

  • withLatestFrom: 2개의 Observable을 뒀을 때, 1번에서 방출이 되는 첫번 째 값은 두고 2번에서 방출되는 값을 1번에서 방출되는 두번 째 값과 결합하여 방출

출처:

https://rxmarbles.com/#withLatestFrom

https://velog.io/@iammiori/RxSwift-17.-withLatestFrom-%EC%A0%81%EC%9A%A9%ED%95%B4%EB%B3%B4%EA%B8%B0

https://ios-development.tistory.com/176

https://okanghoon.medium.com/rxswift-1-rxswift-%EC%9E%85%EB%AC%B8-67bfdbd91969

https://okanghoon.medium.com/rxswift-2-observable-subject-relay-8fcd9b01913d

728x90

'iOS > RxSwift' 카테고리의 다른 글

Action  (0) 2024.01.02
Button  (0) 2023.12.21
TableView  (0) 2023.03.02
distinctUntilChanged(compare: )  (2) 2023.02.20

댓글