swift - combineLatest 的个别失败会怎样?

标签 swift reactive-cocoa reactive-cocoa-4

如果我有两个 SignalProducers(实际上它们是 API 服务请求,所以它们只发送一次“下一个”),并将它们与 combineLatest 组合(因为我想在两者完成后关闭加载微调器),如果其中一个会发生什么失败?或者两者都失败了?

“失败”是否在组合信号上被调用(一次或两次?)?

如果一个失败而另一个成功,是否会在组合信号上调用“next”?

最佳答案

任何信号的失败都会导致整个组合信号出错并停止订阅。

如果一个信号发送其第一个下一个值,而另一个信号发送一个错误作为其第一个值,则下一个信号将丢失,combineLatest: 仅在所有信号发送其第一个下一个值时调用。

subscribeError: 只被调用一次。错误以单子(monad)方式工作,它们在链中向上冒泡并停止整个信号。

如果你想颠覆这个,那么你可以使用 catch:catchTo:retry 方法来处理错误。

(很抱歉谈论 Objective-C 方法,我不知道 Swift 语法)。

关于swift - combineLatest 的个别失败会怎样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35759884/

相关文章:

ios - RxSwift——MainScheduler.instance 与 MainScheduler.asyncInstance

ios - 使用 MVVM 和 ReactiveCocoa,如何处理 iOS 中的委托(delegate)模式?

ios - 如何多投一个正在进行的 Action 的结果或开始一个新 Action

ios - 如何使用 ReactiveCocoa 4.0 和 MVVM 实现双向绑定(bind)

ios - 如何在 SignalProducer 上映射值和错误

ios - 在 ViewModel 中格式化 UITableViewCell 日期

swift - 在表格 View 中选择单元格时删除动画

swift - 如何在 Swift ReactiveCocoa 4 中从 MutableProperty<U> 创建 MutableProperty<T>

swift - TextView自动输入回车键【Mac Catalyst】

swift - 是否有 Swift 单行代码从数组中删除元素(如果存在)并在不存在时附加它?