gpt4 book ai didi

swift - RxSwift 链接 : What is a better way of writing this in Rxswift?

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

我是 RxSwift 的新手。很新。通常要在没有 Rx 的情况下链接你,你将下一个函数放在一个完成闭包中。我的同事告诉我改用 flatmap 或我们的 concatmap 版本,但从未给我一个例子。有人可以用 flatmap 或 concatmap 的 swift 版本转换这段代码吗?同样,我很新,所以请对判断保持温和。

 SVProgressHUD.show()
params.address = address
print(params)
viewmodel
.postSeekerAvatar(image: image).subscribe(onSuccess: {
// SVProgressHUD.dismiss()
// SVProgressHUD.show()
self.viewmodel
.updateSeeker(withFirstName: params.firstName, lastName: params.lastName, isBusiness: params.isBusiness, abn: "none", address: params.address)
.subscribe(onSuccess: {
SVProgressHUD.dismiss()

self.performSegue(withIdentifier: SegueConstants.toProfileForm, sender: self)

}) { (error) in
SVProgressHUD.showDismissableError(with: error.message)
}.disposed(by: self.disposeBag)
}) { (error) in
SVProgressHUD.showDismissableInfo(with: error.message)
}.disposed(by: disposeBag)

最佳答案

因此,您想要的永远不是嵌套的 subscribe 调用。相反,您将转换源可观察值,有时转换为另一个值,有时转换为另一个可观察值。

SVProgressHUD.show()
params.address = address
print(params)
viewmodel
.postSeekerAvatar(image: image)
.flatMap {
self.viewmodel
.updateSeeker(withFirstName: params.firstName, lastName: params.lastName, isBusiness: params.isBusiness, abn: "none", address: params.address)
}
.subscribe(onSuccess: {
SVProgressHUD.dismiss()
self.performSegue(withIdentifier: SegueConstants.toProfileForm, sender: self)
}, onError: { (error) in
SVProgressHUD.showDismissableError(with: error.message)
})
.disposed(by: disposeBag)

所以这里首先订阅postSeekerAvatar,每次推送一个值的时候,updateSeeker也会被订阅。如果其中任何一个出错,错误关闭将运行。

关于swift - RxSwift 链接 : What is a better way of writing this in Rxswift?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54757013/

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