0. 공식 문서 먼저 정독
1. just
단일 값을 발행한 후 onCompleted 이벤트 호출
let observable = Observable.just("Hello, RxSwift!")
observable.subscribe(
onNext: { value in
print(value) // 출력: Hello, RxSwift!
},
onCompleted: {
print("Completed!") // 출력: Completed!
}
)
2. from
배열이나 시퀀스를 요소 하나하나씩 순차적으로 발행
let observable = Observable.from([1, 2, 3, 4, 5])
observable.subscribe(
onNext: { value in
print(value) // 출력: 1, 2, 3, 4, 5
},
onCompleted: {
print("Completed!") // 출력: Completed!
}
)
3. of
가변 매개변수(인자의 개수가 가변적인)를 받아 여러 값을 순차적으로 발행
let observable = Observable.of("A", "B", "C", "D")
observable.subscribe(
onNext: { value in
print(value) // 출력: A, B, C, D
},
onCompleted: {
print("Completed!") // 출력: Completed!
}
)
4. empty
아무 값도 발행하지 않고 바로 onCompleted 이벤트 호출
let observable = Observable<Void>.empty()
observable.subscribe(
onNext: { _ in
print("이건 출력되지 않습니다.")
},
onCompleted: {
print("Completed!") // 출력: Completed!
}
)
5. never
아무 값도 발행하지 않고 onCompleted나 onError도 호출하지 않음
let observable = Observable<Void>.never()
observable.subscribe(
onNext: { _ in
print("호출되지 않습니다.")
},
onCompleted: {
print("에러도 호출되지 않습니다.")
}
)
6. error
에러 이벤트를 즉시 발행하고 종료
enum SampleError: Error {
case somethingWentWrong
}
let observable = Observable<String>.error(SampleError.somethingWentWrong)
observable.subscribe(
onNext: { value in
print(value)
},
onError: { error in
print("Error: \(error)") // 출력: Error: somethingWentWrong
},
onCompleted: {
print("Completed!")
}
)
7. create
데이터 발행 방식을 커스터마이징할 수 있음
let observable = Observable<String>.create { observer in
observer.onNext("Start")
observer.onNext("Processing")
observer.onCompleted()
return Disposables.create()
}
observable.subscribe(
onNext: { value in
print(value) // 출력: Start, Processing
},
onCompleted: {
print("Completed!") // 출력: Completed!
}
)
8. deffered
구독할 때마다 그 시점에서 새로운 Observable을 생성
var flip = false
let observable = Observable<String>.deferred {
flip.toggle()
return flip ? Observable.just("Yes") : Observable.just("No")
}
observable.subscribe(onNext: { print($0) }) // 출력: Yes
observable.subscribe(onNext: { print($0) }) // 출력: No
9. range
특정 범위의 정수를 순차적으로 발행
let observable = Observable.range(start: 1, count: 5)
observable.subscribe(
onNext: { value in
print(value) // 출력: 1, 2, 3, 4, 5
},
onCompleted: {
print("Completed!") // 출력: Completed!
}
)
'iOS > RxSwift' 카테고리의 다른 글
[RxSwift] Observable 필터링 연산자 정리 (0) | 2025.02.01 |
---|---|
[RxSwift] Observable 항목 변환 메서드 정리 (0) | 2024.12.11 |
[UIKit/RxSwift] UITableView를 RxSwift로 구현하는 방법 (0) | 2024.12.02 |
[RxSwift] AsyncSubject (0) | 2024.07.26 |