gpt4 book ai didi

swift - 您如何以简洁易读的方式顺序链接可观察对象

转载 作者:搜寻专家 更新时间:2023-11-01 05:54:45 25 4
gpt4 key购买 nike

我是 RXSwift 的新手,我已经开始研究如何像函数链一样执行 Promise。

我认为我使用平面图走在正确的轨道上,但我的实现很难阅读,所以我怀疑有更好的方法来完成它。

我这里的东西似乎有效,但我开始头疼地想如果我向链中添加另外 3 个或函数会是什么样子。

这是我声明“ promise 链”(难以阅读)的地方

LOGIN().flatMap{ (stuff) -> Observable<Int> in
return API(webSiteData: stuff).flatMap
{ (username) -> Observable<ProfileResult> in
return accessProfile(userDisplayName: username) }
}.subscribe(onNext: { event in
print("The Chain Completed")
print(event)
}, onError:{ error in
print("An error in the chain occurred")
})

这些是我链接的 3 个示例函数

struct apicreds
{
let websocket:String
let token:String
}
typealias APIResult = String
typealias ProfileResult = Int

// FUNCTION 1
func LOGIN() -> Observable<apicreds> {

return Observable.create { observer in
print("IN LOGIn")
observer.onNext(apicreds(websocket: "the web socket", token: "the token"))
observer.on(.completed)
return Disposables.create()
}
}
// FUNCTION 2
func API(webSiteData: apicreds) -> Observable<APIResult> {

return Observable.create { observer in
print("IN API")
print (webSiteData)
// observer.onError(myerror.anError)
observer.on(.next("This is the user name")) // assiging "1" just as an example, you may ignore
observer.on(.completed)
return Disposables.create()
}

}
//FUNCTION 3
func accessProfile(userDisplayName:String) -> Observable<ProfileResult>
{
return Observable.create { observer in

// Place your second server access code
print("IN Profile")
print (userDisplayName)

observer.on(.next(200)) // 200 response from profile call
observer.on(.completed)
return Disposables.create()
}
}

最佳答案

这是我们在链接操作时遇到的一个非常常见的问题。作为初学者,我也曾在我的项目中使用 RxSwift 编写过类似的代码。有两个方面需要改进—— 1.重构代码以移除嵌套的flatMaps 2. 不同的格式使顺序更容易理解

LOGIN()
.flatMap{ (stuff) -> Observable<APIResult> in
return API(webSiteData: stuff)
}.flatMap{ (username) -> Observable<ProfileResult> in
return accessProfile(userDisplayName: username)
}.subscribe(onNext: { event in
print("The Chain Completed")
print(event)
}, onError:{ error in
print("An error in the chain occurred")
})

关于swift - 您如何以简洁易读的方式顺序链接可观察对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54331181/

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