질문은 정확하게 "오류를 발생시키지 않습니다"라는 의미입니다. , 이벤트 후, 최종적으로하는 completed
, failed
또는 interrupted
이벤트로 -
Signal
/SignalProducer
에 이벤트의 시퀀스는 precisely defined semantic
은 Value
(X 0)에서의 임의의 수의 Theres 갖는다. 그 후에 더 이상의 사건은 없습니다.
일반적으로 당신은
가장 사업자는
value
이벤트에서 작동 즉시 (그들에 작동하지 않고)
failed
이벤트를 전파 말할 수 있습니다. 특정 운영자가 확실하지 않은 경우 해당 운영자의 설명서에서 오류 이벤트의 동작에 대해 명확하게 살펴보십시오.
그래서 질문을 이해하는 한 가지 방법은 producerA
이 (value
이벤트의 임의의 숫자 후) 성공적으로 완료 될 때 다음 producerB
를 시작하고 producerA
가 failed
이벤트를 보내는 경우, 다음하지 않는, 말을하는 것입니다.
이 경우 then
연산자가 정확히 필요한 것입니다. producerA
이 완료되는 즉시 producerB
이 시작되지만 이 아닌이면 producerA
이 실패합니다. 당신이이 그 (블록에 오류 처리가 어떻게 보이는지에 따라) 때문에 여기에 flatMapError
를 사용 결국 producerB
발생하게 value
이벤트에 failed
이벤트를 변환 할 해달라고 것을
producerA.then(producerB)
.start(Signal.Observer(value: { value in
print("Value \(value)")
}, failed: {error in
print("Error \(error)")
}))
참고. 질문을 이해하는 또 다른 방법
는 반환 producerA
의 사건에 flatMap
을 사용하는 것입니다 producerA
각 이벤트가 아닌 오류가이 경우 producerB
한 번 를 트리거해야 말을하는 것입니다 각 이벤트의 producerB
은 producerA
입니다.여기에 참고, 다시, flatMap
즉시 failed
이벤트를 전파, 그래서 producerA
에 failed
이벤트는 전체 체인 producerB
producerA.flatMap(.concat) { _ in return producerB }
.start(Signal.Observer(value: { value in
print("Value \(value)")
}, failed: {error in
print("Error \(error)")
}))
지도의 실행하지 않고 를 실패합니다/flatMap는 배열을 반환합니다. 오류를 반환하면 무엇을 의미합니까? – user1046037