2016-03-02 2 views
4

Если у меня есть два SignalProducer (действительно, они являются сервисными запросами API, поэтому они только отправляют «следующий» один раз) и объединяют их с combLatest (так как я хочу, чтобы уволить загрузчик, как только они завершатся), что произойдет, если один из них не пройдет ? Или оба терпят неудачу?Что происходит с отдельными сбоями с combLatest?

Вызывается ли «неудачный» вызов (один или два раза?) По объединенному сигналу?

Если кто-то не работает, а другой преуспевает, будет ли «следующий» вызываться по объединенному сигналу?

ответ

5

Неисправность любого сигнала приведет к ошибке всего объединенного сигнала и прекращению подписки.

Если один сигнал отправляет свой первый следующий, а другой сигнал отправляет ошибку в качестве своего первого значения, то следующий будет потерян, combineLatest: вызывается только после того, как все сигналы отправят свое первое следующее значение.

subscribeError: называется только один раз. Ошибки работают монадически, когда они пузыряют цепь и останавливают весь сигнал.

Если вы хотите подорвать это, вы можете использовать методы для обработки ошибок с помощью методов catch:, catchTo: или retry.

(Извините за то, что я говорю о методах Objective-C, я не знаю синтаксиса Swift).

+1

Спасибо большое, у меня отличная неделя :) – Chris