0

如何在 ReactiveSwift 中将 Signal 和 SignalProducer 合并为 Signal?

以下是我到目前为止所拥有的。我不知道如何获得Signal在线 3。

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 的新手,老实说,这是我遇到过的最令人困惑的框架

4

1 回答 1

2

Reactive-Swift 有一个start将观察者作为参数的重载merge,所以我认为你可以达到与调用相同的效果signalProducer.start(observerA)。这应该通过发送所有产生的信号事件signalA

至于为什么这样做:startWithSignal采取一个闭包,以便您可以在它开始发送任何事件之前连接产生的信号。如果它只是返回一个信号,则可能会在您调用 start 和连接它的时间之间错过事件,具体取决于相关的生产者。这个答案给出了一个例子。

于 2017-05-29T23:15:23.580 回答