【发布时间】:2018-07-25 11:49:53
【问题描述】:
我对 Rx 和反应式编程很陌生。我只是想让事情顺利进行。我正在尝试在向 API 请求(Github 的 API)后填充一个对象:
要填充的对象:
class GithubUser {
var login: String?
var joinDate: Date?
var email: String?
}
我尝试喂它的方式:
class GithubUserRepository {
static func getUser() -> Observable<GithubUser> {
let userObservable = BehaviorRelay<GithubUser>(value: GithubUser())
let login = "Thiryn"
// GithubService.sharedInstance.getUser does whatever async call to the github API to get a user profile
GithubService.sharedInstance.getUser(login, success: { (userProfile) in
userObservable.value.login = login
userObservable.value.email = userProfile.email
userObservable.value.joinDate = userProfile.joinedDate
}) { (error) in
print(error.localizedDescription)
}
return userObservable.asObservable()
}
}
以及我如何尝试消费
class ViewController: UIViewController {
let disposeBag = DisposeBag()
override func viewDidLoad() {
super.viewDidLoad()
GithubUserRepository.getUser().subscribe(onNext: { (user) in
print(user.login ?? "nope")
}).disposed(by: self.disposeBag)
}
}
结果是我第一次“不”,在请求被执行之前,然后我成功地从我的请求中得到了一个结果,改变了对象的值,但我可能会做错事,因为订阅的函数是之后从未执行过。 有什么想法吗?谢谢!
编辑:我的尝试基于Reactive Values example from RxSwift
【问题讨论】:
标签: swift observable rx-swift subscribe