0
我很喜欢ReactiveCocoa/ReactiveSwift的noob。我有两个SignalProducers。如果第一个SignalProducer返回nil,那么我想要执行第二个Signal Producer否则不是。我阅读了文档,但我不确定哪种语法可以帮助我像这样工作。任何帮助,高度赞赏。如何使用反应可可5或6链接信号发生器或信号发生器序列?
我很喜欢ReactiveCocoa/ReactiveSwift的noob。我有两个SignalProducers。如果第一个SignalProducer返回nil,那么我想要执行第二个Signal Producer否则不是。我阅读了文档,但我不确定哪种语法可以帮助我像这样工作。任何帮助,高度赞赏。如何使用反应可可5或6链接信号发生器或信号发生器序列?
好吧,所以你想从第一个SignalProducer获取值,只要这些值不是零。然后,您想要从第二个SignalProducer获取值。如果措辞这样一来,它已经告诉你你需要的运营商:take(while:)
和then
:
let producerA: SignalProducer<Int?, NoError>
let producerB: SignalProducer<Int?, NoError>
...
producerA
.take(while: { $0 != nil })
.then(producerB)
的take(while:)
运营商将只转发所有的事件,只要给定块返回true。因此,在这种情况下,只要事件为零,该块返回false,并且生成的SignalProducer完成。
的then
运营商也从转发事件producerA
直到producerA
完成,此时producerB
开始,现在从producerB
事件转发。
你是什么意思与“返回零”?你的意思是第一个SignalProducer发送一个值为零的事件吗?或者你的意思是它根本不发送一个事件,然后终止? – MeXx
第一个生产者发送值为nil @MeXx的事件 – coolly