我仍然是一个被动的新手,我正在寻求帮助。
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
是解决方案的一部分,但我不确定该放在哪里。
--
正如我正在考虑的那样,我可以接受依次发生的呼叫。那可能会更好...
IE:
Start doA()
if it completes start doB()
if it completes emit .Success
else emit .BFailed.
else forward the error.
谢谢你的帮助。