[TIL] RxSwift 사용법

Eden·2024년 12월 29일
1

TIL

목록 보기
81/92
post-thumbnail

RxSwift는 간결하고 선언적인 방식으로 데이터 흐름과 이벤트를 관리할 수 있는 리액티브 프로그래밍 도구다.


1. Observable 생성 및 구독

Observable은 데이터 스트림을 생성하고 구독을 통해 이벤트를 처리한다.

import RxSwift

let observable = Observable.of(1, 2, 3)

observable.subscribe(onNext: { value in
    print("Received value: \(value)")
}, onCompleted: {
    print("Completed")
}).disposed(by: disposeBag)

2. Subject를 사용한 상태 관리

Subject는 Observable이자 Observer로 동작하며 상태를 관리할 수 있다.

let subject = BehaviorSubject(value: 0)

subject.onNext(1)

subject.subscribe(onNext: { value in
    print("Current state: \(value)")
}).disposed(by: disposeBag)

subject.onNext(2)

3. 연산자 활용

연산자를 사용해 데이터 스트림을 변환하거나 필터링한다.

Observable.of(1, 2, 3)
    .map { $0 * 2 }
    .filter { $0 > 2 }
    .subscribe(onNext: { value in
        print("Transformed value: \(value)")
    }).disposed(by: disposeBag)

4. 스케줄러를 통한 스레드 제어

스케줄러를 사용해 작업 실행 컨텍스트를 제어한다.

Observable.just("Hello")
    .subscribeOn(ConcurrentDispatchQueueScheduler(qos: .background))
    .observeOn(MainScheduler.instance)
    .subscribe(onNext: { value in
        print("Received on main thread: \(value)")
    }).disposed(by: disposeBag)

5. 비동기 작업 처리

RxSwift는 비동기 데이터를 간단하게 처리할 수 있다.

func fetchData() -> Observable<String> {
    return Observable.create { observer in
        DispatchQueue.global().asyncAfter(deadline: .now() + 1) {
            observer.onNext("Fetched Data")
            observer.onCompleted()
        }
        return Disposables.create()
    }
}

fetchData()
    .subscribe(onNext: { data in
        print("Received: \(data)")
    }).disposed(by: disposeBag)

profile
Frontend🌐 and iOS

0개의 댓글