我几乎是 ReactiveCocoa/ReactiveSwift 的菜鸟。我有两个 SignalProducers。如果第一个 SignalProducer 返回 nil,那么我想执行第二个 Signal Producer,否则不会。我阅读了文档,但我不确定哪种语法可以帮助我完成这样的工作。非常感谢任何帮助。
问问题
1140 次
1 回答
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
转发事件。
于 2017-09-14T15:21:34.443 回答