/ / Как да веригират производителите на сигнали или последователността на производителите на сигнали, използвайки реактивно какао 5 или 6? - бързо, какао, реактивно програмиране, реактивно-какао, реактивно-бързо

Как да произвеждат верига на сигнала или последователност от производители на сигнали, използващи реактивно какао 5 или 6? - бързо, какао, реактивно програмиране, реактивно-какао, реактивно-бързо

Аз съм почти 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 се препращат.