gpt4 book ai didi

swift - RxSwift 重试全链

转载 作者:行者123 更新时间:2023-11-30 11:24:57 34 4
gpt4 key购买 nike

我是 RxSwift 新手,遇到以下问题。

给定两个函数:

struct Checkout { ... }

func getSessionIdOperation() -> Single<UUID>
func getCheckoutForSession(_ sessionId: UUID, asGuestUser: Bool) -> Single<Checkout>

我有第三个函数,它结合了两个函数的结果:

func getCheckout(asGuestUser: Bool) -> Single<Checkout> {
return getSessionIdOperation()
.map { ($0, asGuestUser) }
.flatMap(getCheckoutForSession)
}

getSessionIdOperationgetCheckoutForSession都可能失败,如果失败,我想重新启动整个链一次。我尝试了 retry(2) 但只是重复了 getCheckoutForSession 。 :(

最佳答案

确保使用 flatMap 进行retry(2) 直播

func getCheckout(asGuestUser: Bool) -> Single<Checkout> {
return getSessionIdOperation()
// .retry(2) will retry just first stream
.map { ($0, asGuestUser) }
.flatMap(getCheckoutForSession)
.retry(2) // Here it will retry whole stream
}

如果 getSessionIdOperation 失败,getCheckoutForSession 将永远不会被调用,因为它基于第一个流的输出。

关于swift - RxSwift 重试全链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50843542/

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