我在reactivecocoa/reactiveswift中几乎是菜鸟。我有两个信号生产者。如果第一个SignalProducer返回零,那么我想执行第二个信号生产者,否则就不会执行。我阅读了文档,但我不确定哪种语法可以帮助我进行这样的工作。任何帮助将受到高度赞赏。
好的,因此,只要这些值不是零,您就需要从第一个信号生物产生程序中获取值。然后,您想从第二个SignalProducer中获取值。如果以这种方式措辞,它已经告诉您需要哪个操作员:take(while:)
和then
:
let producerA: SignalProducer<Int?, NoError>
let producerB: SignalProducer<Int?, NoError>
...
producerA
.take(while: { $0 != nil })
.then(producerB)
只要给定的块返回true, take(while:)
操作员将仅转发所有事件。因此,在这种情况下,一旦事件为零,块就会返回false,并且由此产生的SignalProducer完成。
then
操作员还将事件从producerA
转发到producerA
完成,此时producerB
已开始,现在转发了producerB
的事件。