gpt4 book ai didi

swift - 如何使用 RxSwift 在一个地方捕获两个请求的错误

转载 作者:行者123 更新时间:2023-11-30 10:06:06 28 4
gpt4 key购买 nike

我是个新手,我想知道如何从压缩到一个地方的请求(参见上面的片段)中捕获错误。在当前的实现中,我在两个地方进行错误处理,但我的目标是将其放在一处。我的请求被压缩,因为如果其中一个请求失败,整个序列都会失败,因此我希望在代码中为这两个请求提供一个错误处理位置。

 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)

..也许一些带有常见错误处理示例代码的链接对我来说非常有用。非常感谢。

最佳答案

zip返回一个新的 Observable<T> ,因此您只需移动 catchError运算符应用到什么zip返回。

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)

参见flatMap documentation了解详情。

关于swift - 如何使用 RxSwift 在一个地方捕获两个请求的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35875923/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com