Publishers.MapError
์ ๋ค๋ฆญ ๊ตฌ์กฐ์ฒด | ์์์ ํ๋ฅด๋ Publisher์ ์ด๋ ํ ์คํจ๋ฅผ ์๋ก์ด ์๋ฌ๋ก ๋ณํํ๋ Publisher
์ด๋์ ๋ผ์ด์ ๋ ๋ ๊ฐ์ ์ธ์๋ฅผ ๋ฐ๋๋ค.
upstream: ์์์ ํ๋ฅด๋ Publishertransform: ์์์ ํ๋ฅด๋ Publisher์ ์คํจ๋ฅผ ์๋ก์ด ์๋ฌ๋ก ๋ณํํ๋ ํด๋ก์
upstream Publisher์ ์๋ฌ ํ์
์ Error๋ค.
์๋ฌ๋ฅผ ๋ณํํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค. ์๋ฌ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒ์ด ์๋๋ฏ๋ก ์์์ ํ๋ฅด๋ Publisher๊ฐ ์๋ฌ๋ฅผ ๋ด๊ณ ๋ณ๋์ ์๋ฌ ์ฒ๋ฆฌ ์์ ์ด ์๋ค๋ฉด ์๋ฌ๋ฅผ ๋ด๋ฉฐ ์ข ๋ฃํ๊ฒ ๋๋ค.
mapError ์คํผ๋ ์ดํฐ์ ๊ด๋ จ์ด ์๋ค.
// Publishers.MapError Publisher
Publishers.MapError(upstream: Fail<Void, NSError>(error: error), { $0 as Error })
.sink(receiveCompletion: { completion in
switch completion {
case .failure:
print("Combine MapError Error")
case .finished:
print("Combine MapError Finish")
}
}, receiveValue: {
print("Combine MapError")
})
.store(in: &cancellables)
// mapError Operator
Fail(error: error)
.mapError { $0 as Error }
.sink(receiveCompletion: { completion in
switch completion {
case .failure:
print("Combine MapError Error")
case .finished:
print("Combine MapError Finish")
}
}, receiveValue: {
print("Combine MapError")
})
.store(in: &cancellables)
// Combine MapError Error๋ ์ฝ๋ ๋ชจ๋ ์์ Publisher๋ก NSError ๊ฐ์ฒด๋ฅผ ๋ฐ๋ Fail Publisher๋ฅผ ์ฌ์ฉํ์๋ค.
$0 as Error๋ฅผ ํตํด NSError ํ์
์ด Error ํ์
์ผ๋ก ๋งคํ๋๋ค.
์์์ ํ๋ฅด๋ Publisher๊ฐ ์๋ฌ๋ฅผ ๋ด๋ฏ๋ก ๊ฒฐ๊ณผ์ ์ผ๋ก ์๋ฌ๋ฅผ ๋ด๋ฉฐ ์ข ๋ฃํ๋ค.
RxSwift
๋ด๋ถ์ ์ผ๋ก ์๋ฌ์ ํ์
์ผ๋ก Error๋ฅผ ๋
ธ์ถํ๋ฏ๋ก mapError์ ๊ฐ์ด ์๋ฌ์ ํ์
์ ๋ณํํ๋ ์คํผ๋ ์ดํฐ๋ฅผ ์ ๊ณตํ์ง ์๋๋ค.
Observable<Void>.error(error)
.subscribe(onNext: {
print("RxSwift MapError")
}, onError: { _ in
print("RxSwift MapError Error")
}, onCompleted: {
print("RxSwift MapError Finish")
})
.disposed(by: disposeBag)
// RxSwift MapError ErrorReactiveSwift
mapError ์คํผ๋ ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌํํ ์ ์๋ค.
SignalProducer<Void, NSError>(error: error)
.mapError { $0 as Error }
.start { event in
switch event {
case .value:
print("ReactiveSwift MapError")
case .failed:
print("ReactiveSwift MapError Error")
case .completed:
print("ReactiveSwift MapError Finish")
default:
break
}
}Last updated
Was this helpful?