Как связать по цепочке производителей сигналов или последовательность производителей сигналов с использованием реактивного какао 5 или 6?

Я в значительной степени нуб в ReactiveCocoa/ReactiveSwift. У меня есть два производителя сигналов. Если первый SignalProducer возвращает ноль, то я хочу запустить второго Signal Producer, иначе нет. Я прочитал документацию, но я не уверен, какой синтаксис помогает мне работать примерно так. Любая помощь высоко ценится.

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:) Оператор будет просто пересылать все события, пока данный блок возвращает true. Таким образом, в этом случае, как только событие имеет значение nil, блок возвращает значение false, и результирующий SignalProducer завершается.

then Оператор также пересылает события из producerA до тех пор producerA завершает, в какой момент producerB запущен и теперь события из producerB пересылаются

Другие вопросы по тегам