如何将Signal和SignalProducer合并到ReactiveSwift中的Signal?
以下是我到目前为止的情况。我无法弄清楚如何在第3行获得Signal
。
let (signalA, observerA) = Signal<String, NoError>.pipe()
let signalProducer = /* some signalproducer */
let signalFromSignalProducer == /* how to get a signal from signalProducer here??? */
let mergedSignal = Signal.merge([signalA, signalFromSignalProducer])
我看过这个startWithSignal
方法
public func startWithSignal(_ setup: (ReactiveSwift.Signal<Value, Error>, Disposable) -> Swift.Void)
但需要关闭。为什么它不能只返回信号?我不想为每个需要信号的signalProducer创建另一个嵌套闭包。什么。
我是ReactiveSwift的新手,说实话,这是我遇到的最令人困惑的框架
答案 0 :(得分:2)
Reactive-Swift有start
overload that takes an observer as a parameter,所以我认为通过调用merge
可以达到与signalProducer.start(observerA)
相同的效果。这应该通过signalA
发送所有产生的信号的事件。
至于为什么这样做:startWithSignal
采用闭包,以便您可以在开始发送任何事件之前连接生成的信号。如果它刚刚返回一个信号,则可能会在您调用start的时间和连接它的时间之间错过事件,具体取决于相关的生产者。 This answer给出了一个例子。