我有一个名为login
的网络请求,该请求返回一个Observable<UserInfo>
。我需要根据从login
返回的数据是否具有count> 1来根据该结果进行另一个API调用,否则,我只需要转到其他视图控制器即可。我正在尝试使用flatMapLatest
来检查第一个请求login
并进行下一个网络调用jobStates
(返回一个Observable<JobState>
,但是我没有认为我正确地安排了它们,有什么想法吗,有没有更好/更轻松的方法来做到这一点?
答案 0 :(得分:1)
我希望看到这样的东西:
func login() {
let loginResult = networkService
.login(login: usernameTextField.text!, password: passwordTextField.text!)
.share()
loginResult
.filter { $0.count > 1 }
.subscribe(onNext: { userInfo in
// stop here and go to a different view with userInfo data
})
.disposed(by: disposeBag)
let networkService = self.networkService // so you don't have to capture self below
loginResult
.filter { $0.count <= 1 }
.flatMapLatest { networkService.jobStates(locationId: $0.locationId) }
.subscribe(
onNext: { data in
// do whatever with data from second request
},
onError: { error in
// if either request errors, you will end up here.
})
.disposed(by: disposeBag)
}
当您有两种可能的结果时,您需要两个不同的订阅。