reactive-programming - catch:和subscribeError之间的区别:

标签 reactive-programming reactive-cocoa

ReactiveCocoa中,subscribeError:方法和catch:有什么区别?您为什么要返回catch:中的信号?

最佳答案

-subscribeError:实际上订阅:这是行的结尾。而-catch:只是将信号转换为新信号(实际上并没有订阅)。将信号视为程序。当您-subscribeError:时,您告诉计算机“我想运行该程序,但是如果出现错误,我只希望收到您的回音。”当您-catch:时,您说的是“我有这个程序可能会引发错误,并且我想根据处理该错误的旧程序创建一个新程序。”

您必须返回-catch:中的信号的原因是,它不仅仅用于抑制错误:它实际上是用于响应错误。一旦原始信号出错,它就好了:如果您希望结果信号在发生故障后继续运行,则必须在-catch:中给出一个新信号。

您可以在-catch:中执行的操作的示例:

  • 如果您想静默失败并且不抛出错误,请返回[RACSignal empty]
  • 如果您要在执行某些操作后重新抛出错误,或者您想转换错误,请返回[RACSignal error:err]
  • 返回第一个错误时要订阅的其他信号。
  • 关于reactive-programming - catch:和subscribeError之间的区别:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19439636/

    相关文章:

    c# - 使用 Rx 和 SelectMany 限制并发请求

    javascript - Rxjs:将数组字段中的每个元素从对象的可观察对象映射到另一个可观察对象

    java - RxJava : Creating class instance white running on Observables chain

    objective-c - 以 Swift 方式将 Objective-C block 转换为闭包

    ios - ReactiveCocoa 中冷热信号的例子有哪些?

    ios - 我可以在 swift 3 中使用 ReactiveCocoa 吗?

    javascript - 了解 rxjs 中的背压 - 仅缓存 5 张等待上传的图像

    angular - 是否有可以在组件内部使用的等效异步管道?

    javascript - RxJS 中的映射失败?

    swift - 如果 ReactiveCocoa 4 中下一个信号没有发送,则在延迟后重试