Reactive programming catch:和subscribeError之间的差异:
在中,Reactive programming catch:和subscribeError之间的差异:,reactive-programming,reactive-cocoa,Reactive Programming,Reactive Cocoa,在中,subscribeError:方法与catch:之间有什么区别?为什么要在catch:中返回信号?-subscribeError:实际订阅:这是行的结尾。而-catch:只是将一个信号转换成一个新信号(实际上并不订阅)。把信号想象成一个程序。当你-catch:订阅错误时,你是在告诉计算机“我想运行这个程序,但我只想在它出错时得到你的回复。”当你-catch:时,你是在说“我有一个可能抛出错误的程序,我想在旧程序的基础上创建一个新程序,以不同的方式处理该错误。” 您必须在-catch:中返回
subscribeError:
方法与catch:
之间有什么区别?为什么要在catch:
中返回信号?-subscribeError:
实际订阅:这是行的结尾。而-catch:
只是将一个信号转换成一个新信号(实际上并不订阅)。把信号想象成一个程序。当你-catch:
订阅错误时,你是在告诉计算机“我想运行这个程序,但我只想在它出错时得到你的回复。”当你-catch:
时,你是在说“我有一个可能抛出错误的程序,我想在旧程序的基础上创建一个新程序,以不同的方式处理该错误。”
您必须在-catch:
中返回信号的原因是,它不仅仅用于消除错误:它实际上是用于响应错误。一旦原始信号出错,它就消失了:如果您希望结果信号在故障后继续运行,您必须在-catch:
中给出一个新信号
您可以在-catch:
中执行的操作示例:
[RACSignal empty]
[RACSignal error:err]
很好的解释。从
-catch:
内启动AlertView并返回空信号以“抑制”错误似乎是RAC处理错误的一个常见切入点,至少在我的经验中是这样。@terrylewis在处理错误时要小心。由于信号的值可能在任意线程上传递,因此-catch:
块也可能在那里运行。