[RxSwift] Traits
2023. 9. 18. 22:37
Single
일련의 element를 방출하는 대신 항상 단일 요소 또는 error를 방출하는 것을 보장하는 Observable의 변형
Observable<String>.create{ observer -> Disposable in
observer.onError(TraitsError.single)
return Disposables.create()
}.asSingle()
.subscribe(onSuccess: {
print($0)
}, onFailure: {
print("error : \($0.localizedDescription)")
}, onDisposed: {
print("disposed")
}
).disposed(by: disposeBag)
// error : The operation couldn’t be completed. (__lldb_expr_65.TraitsError error 0.)
// disposed
Completable
error 발생 시에만 발생시킬 수 있는 Observable의 변형
어떠한 요소도 방출 되지 않는 것이 보장
작업이 완료 되었다라는 것만 고려하고 해당 완료로 인해 발생한 요소는 신경 쓰지 않고 모든 사례를 모델링할 때 사용하거나,
요소를 방출할 수 없는 Observable를 사용하는 것과 비교
Completable.create{ observer -> Disposable in
observer(.completed)
return Disposables.create()
}
.subscribe(onCompleted: {
print("compledted")
}, onError: {
print($0.localizedDescription)
}, onDisposed: {
print("disposed")
}).disposed(by: disposeBag)
// compledted
// disposed
Maybe
Single과 Completable의 중간에 있는 Observable의 변형
단일 요소를 방출하거나 요소를 방출하지 않고 완료하거나(completed), 오류를 방출할 수 있음(error)
Success
Maybe<String>.just("Hi")
.subscribe(onSuccess: {
print($0)
}, onError: {
print($0.localizedDescription)
}, onCompleted: {
print("completed")
}, onDisposed: {
print("dispose")
})
.disposed(by: disposeBag)
// Hi
// dispose
error
Observable<String>.create{ observer -> Disposable in
observer.onError(TraitsError.maybe)
return Disposables.create()
}
.asMaybe()
.subscribe(onSuccess: {
print($0)
}, onError: {
print($0.localizedDescription)
}, onCompleted: {
print("completed")
}, onDisposed: {
print("dispose")
}).disposed(by: disposeBag)
// The operation couldn’t be completed. (__lldb_expr_65.TraitsError error 1.)
// dispose
출처
패스트캠퍼스 | 30개 프로젝트로 배우는 iOS 앱개발 with Swift 초격차 패키지 Online
728x90
'iOS > RxSwift' 카테고리의 다른 글
RxSwift 시즌 2 정리 (0) | 2025.01.12 |
---|---|
[RxSwift] TimeBasedOperator (0) | 2023.10.03 |
[RxSwift] Combine Operator (0) | 2023.10.03 |
[RxSwift] Subject (0) | 2023.09.16 |
[RxSwift] Observable (0) | 2023.09.10 |