【问题标题】:How to chain signal producers or sequence of signal producers using reactive cocoa 5 or 6?如何使用反应性可可 5 或 6 链接信号生产者或信号生产者序列?
【发布时间】:2017-09-13 06:41:11
【问题描述】:

我几乎是 ReactiveCocoa/ReactiveSwift 的菜鸟。我有两个 SignalProducers。如果第一个 SignalProducer 返回 nil,那么我想执行第二个 Signal Producer,否则不会。我阅读了文档,但我不确定哪种语法可以帮助我完成这样的工作。非常感谢任何帮助。

【问题讨论】:

  • “返回零”是什么意思?你的意思是第一个 SignalProducer 发送一个值为 nil 的事件?或者你的意思是它根本不发送事件然后终止?
  • 第一个生产者发送一个值为 nil @MeXx 的事件

标签: swift cocoa reactive-programming reactive-cocoa reactive-swift


【解决方案1】:

好的,只要这些值不为零,您就想从第一个 SignalProducer 中获取值。然后,您想从第二个 SignalProducer 中获取值。如果这样表述,它已经告诉您需要哪些运算符:take(while:)then

let producerA: SignalProducer<Int?, NoError>
let producerB: SignalProducer<Int?, NoError>

...

producerA
  .take(while: { $0 != nil })
  .then(producerB)

只要给定的块返回 true,take(while:) 运算符就会转发所有事件。所以在这种情况下,只要一个事件为 nil,块就会返回 false,并且生成的 SignalProducer 完成。

then 运算符还转发来自producerA 的事件,直到producerA 完成,此时启动producerB,现在转发来自producerB 的事件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多