如何使用 RxSwift 在一个地方捕获来自两个请求的错误
How to catch errors from two requests in one place using RxSwift
我是新手,我想知道如何从压缩(见上面的片段)在一个地方的请求中捕获错误。在当前的实现中,我在两个地方进行了错误处理,但我的目标是将它放在一个地方。我的请求被压缩了,因为如果其中一个请求失败,整个序列都会失败,所以结果我想在代码中为两个请求放置一个错误处理位置。
let firstReq = self.sendReq() // returns Observable<Bool>
.catchError {
error in
return self.just(true)
}
let secondReq = self.sendReqTwo() // returns Observable<Bool>
.catchError {
error in
return self.just(true)
}
goBttnOutlet.rx_tap
.subscribeNext {
Observable.zip(firstReqRes, secondReqRes) { (firstRes, secondRes) -> Bool in
return firstRes && secondRes
}.subscribeNext { summaryRes in
print(" \(summaryRes)")
}.addDisposableTo(self.rx_disposableBag)
}.addDisposableTo(rx_disposableBag)
..也许一些 link 带有在常见地方处理错误的示例代码对我来说会很好。
非常感谢。
zip
returns 一个新的 Observable<T>
,因此您可以简单地将 catchError
操作员应用程序移动到 zip
returns.
let firstReq = self.sendReq()
let secondReq = self.sendReqTwo()
let zippedReq = Observable.zip(firstReq, secondReq)
.catchErrorJustReturn { _ in true }
goBttnOutlet.rx_tap
.subscribeNext {
zippedReq.subscribeNext { summaryRes in
print(" \(summaryRes)")
}.addDisposableTo(self.rx_disposableBag)
}.addDisposableTo(rx_disposableBag)
附带说明一下,您可以将 goBttnOutlet 之后的链改进为以下内容
goBttnOutlet.rx_tap.flatMap { zippedReq }
.subscribeNext { summaryRes in
print(" \(summaryRes)")
}.addDisposableTo(rx_disposableBag)
我是新手,我想知道如何从压缩(见上面的片段)在一个地方的请求中捕获错误。在当前的实现中,我在两个地方进行了错误处理,但我的目标是将它放在一个地方。我的请求被压缩了,因为如果其中一个请求失败,整个序列都会失败,所以结果我想在代码中为两个请求放置一个错误处理位置。
let firstReq = self.sendReq() // returns Observable<Bool>
.catchError {
error in
return self.just(true)
}
let secondReq = self.sendReqTwo() // returns Observable<Bool>
.catchError {
error in
return self.just(true)
}
goBttnOutlet.rx_tap
.subscribeNext {
Observable.zip(firstReqRes, secondReqRes) { (firstRes, secondRes) -> Bool in
return firstRes && secondRes
}.subscribeNext { summaryRes in
print(" \(summaryRes)")
}.addDisposableTo(self.rx_disposableBag)
}.addDisposableTo(rx_disposableBag)
..也许一些 link 带有在常见地方处理错误的示例代码对我来说会很好。 非常感谢。
zip
returns 一个新的 Observable<T>
,因此您可以简单地将 catchError
操作员应用程序移动到 zip
returns.
let firstReq = self.sendReq()
let secondReq = self.sendReqTwo()
let zippedReq = Observable.zip(firstReq, secondReq)
.catchErrorJustReturn { _ in true }
goBttnOutlet.rx_tap
.subscribeNext {
zippedReq.subscribeNext { summaryRes in
print(" \(summaryRes)")
}.addDisposableTo(self.rx_disposableBag)
}.addDisposableTo(rx_disposableBag)
附带说明一下,您可以将 goBttnOutlet 之后的链改进为以下内容
goBttnOutlet.rx_tap.flatMap { zippedReq }
.subscribeNext { summaryRes in
print(" \(summaryRes)")
}.addDisposableTo(rx_disposableBag)