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

How do I merge a Signal and a SignalProducer into a Signal in ReactiveSwift?

如何在 ReactiveSwift 中将 Signal 和 SignalProducer 合并到 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)

但它需要关闭。为什么它不能只是 return 一个信号?我不想为我需要信号的每个 signalProducer 创建另一个嵌套闭包。什么。

我是 ReactiveSwift 的新手,老实说,这是我遇到过的最令人困惑的框架

Reactive-Swift有一个start overload that takes an observer as a parameter,所以我想你可以通过调用signalProducer.start(observerA)达到和merge一样的效果。这应该通过 signalA 发送所有生成的信号事件。

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