rxswift reactivecocoa reactive-programming reactive-cocoa

reactive-programming - rxswift - reactivecocoa swift



Diferencia entre catch: y subscribeError: (1)

En ReactiveCocoa , ¿cuál es la diferencia entre el subscribeError: method vs. catch: :? ¿Por qué querrías devolver una señal en catch: :?


-subscribeError: realidad se suscribe: este es el final de la línea. Mientras que -catch: simplemente transforma una señal en una nueva señal (y en realidad no se suscribe). Piense en la señal como un programa. Cuando -subscribeError: le está diciendo a la computadora "Quiero ejecutar este programa, pero solo quiero saber de usted si se produce un error". Cuando usted -catch: , dice: "Tengo este programa que puede generar un error y quiero crear uno nuevo basado en el antiguo que maneja ese error de manera diferente".

La razón por la que tiene que devolver una señal en -catch: es que no es simplemente para silenciar errores: en realidad es para responder a errores. Una vez que se ha producido un error en la señal original, ya no existe: si desea que la señal resultante continúe después de una falla, debe -catch: una nueva señal en -catch:

Ejemplos de lo que podrías hacer en -catch: ::

  1. Devuelve [RACSignal empty] si quieres fallar en silencio y no lanzar un error.
  2. Devuelva [RACSignal error:err] si desea volver a emitir el error después de hacer algo, o tal vez quiera transformar el error.
  3. Devuelva alguna otra señal a la que desee suscribirse en caso de que la primera cometa un error.