我仍然是一个反应式新手,正在寻求帮助。
func doA() -> Observable<Void>
func doB() -> Observable<Void>
enum Result {
case Success
case BFailed
}
func doIt() -> Observable<Result> {
// start both doA and doB.
// If both complete then emit .Success and complete
// If doA completes, but doB errors emit .BFailed and complete
// If both error then error
}
上述是我认为我想要的...初始功能
doA()
和doB()
包装了网络调用,因此它们都会发出一个信号,然后Complete
(或Error
而没有发出任何Next
事件)。如果doA()
完成但doB()
出错,我希望doIt()
发出.BFailed
然后完成。
感觉应该使用zip
或combineLatest
,但我不确定如何知道哪个序列失败了。我也很确定catchError
是解决方案的一部分,但我不确定应该把它放在哪里。
--
思考一下,我可以接受调用按顺序进行。这可能甚至更好...
即:
Start doA()
if it completes start doB()
if it completes emit .Success
else emit .BFailed.
else forward the error.
感谢您的帮助。
谢谢。