RxSwift는 간결하고 선언적인 방식으로 데이터 흐름과 이벤트를 관리할 수 있는 리액티브 프로그래밍 도구다.
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)
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)
연산자를 사용해 데이터 스트림을 변환하거나 필터링한다.
Observable.of(1, 2, 3)
.map { $0 * 2 }
.filter { $0 > 2 }
.subscribe(onNext: { value in
print("Transformed value: \(value)")
}).disposed(by: disposeBag)
스케줄러를 사용해 작업 실행 컨텍스트를 제어한다.
Observable.just("Hello")
.subscribeOn(ConcurrentDispatchQueueScheduler(qos: .background))
.observeOn(MainScheduler.instance)
.subscribe(onNext: { value in
print("Received on main thread: \(value)")
}).disposed(by: disposeBag)
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)