Аз съм почти noob вReactiveCocoa / ReactiveSwift. Имам два SignalProducers. Ако първият SignalProducer върне нула, тогава искам да изпълня втори производител на сигнали, в противен случай не. Прочетох документацията, но не съм сигурен кой синтаксис ми помага да работя нещо подобно. Всяка помощ е високо оценена.
Отговори:
2 за отговор № 1Добре, така че искате да вземете стойности от първатаSignalProducer, стига тези стойности да не са нулеви. След това искате да вземете стойности от втория SignalProducer. Ако сте изразени по този начин, той вече ви казва кои оператори се нуждаете: take(while:)
и then
:
let producerA: SignalProducer<Int?, NoError>
let producerB: SignalProducer<Int?, NoError>
...
producerA
.take(while: { $0 != nil })
.then(producerB)
Най- take(while:)
операторът просто ще препрати всички събития, стига даденият блок да се върне истина. Така че в този случай, веднага щом едно събитие е нулево, блокът връща невярно и полученият SignalProducer завършва.
Най- then
операторът също препраща събития от producerA
до producerA
завършва, в който момент producerB
се стартира и сега събития от producerB
се препращат.