任何人都可以帮我这个吗?我有这个小代码:
getUserDetailsApi().flatMap(){users in
return getScoreApi(users[0])
}.subscribe(
onCompleted: {
print("Done")
},
onError: {
// which of the two APIs get an error?
})
我在这里调用两个API,在getUserDetailsApi中我想在无法获取用户详细信息或出现问题时调用错误并跳过getScoreApi。 getScoreApi上的相同如果它无法获得用户的分数,它将引发不同的错误。
有没有办法可以在flatMap()上抛出上述错误?请注意,两个observable必须按顺序执行,并且这些错误具有不同的消息
答案 0 :(得分:2)
您应该在getUserDetailsApi()
和getScoreApi()
中抛出错误。
示例:
func getUserDetailsApi() -> Observable<[User]> {
return Observable.create { observer in
// Your api call
// ...
// Probably you get the users array or an error.
if (error) {
observer.onError(YourError.UserDetailsError) // <- Your error
} else {
observer.onNext(users)
observer.onCompleted()
}
return Disposables.create {
// your dispose
}
}
}
getScoreApi()
也一样。然后,如果其中一个失败,flatMap
将失败。
getUserDetailsApi().flatMap(){users in
return getScoreApi(users[0])
}.subscribe(
onCompleted: {
print("Done")
},
onError: {
switch error{
case .userDetailsError:
// ...
case .otherError:
// ...
}
})