「正確には、エラーは発生しません」という意味です。
Signal
/SignalProducer
上のイベントのシーケンスがprecisely defined semantic
(0から - X)Value
任意の数のTheresのたイベントは、completed
、failed
又はinterrupted
イベントにより、最終的に行きました。その後、もうイベントはありません。
一般的に、あなたは最もオペレーターが唯一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
上各イベントはその場合にはproducerB
後をトリガすべきと言うことです、あなたは返すようにproducerA
のイベントにflatMap
を使用します各イベントの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