【发布时间】:2017-05-30 23:51:28
【问题描述】:
如何在 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)
但它需要关闭。为什么它不能只返回一个信号?我不想为我需要信号的每个 signalProducer 创建另一个嵌套闭包。什么。
我是 ReactiveSwift 的新手,老实说,这是我遇到过的最令人困惑的框架
【问题讨论】:
-
startWithSignal需要一个闭包,这样您就可以在它开始发送任何事件之前连接产生的信号。如果它只是返回一个信号,则可能会在您调用start和您连接它的时间之间错过事件,具体取决于相关的生产者。您能否在此处添加有关您要执行的操作的更多详细信息?可能有一种更惯用的设置方式,不需要像这样使用startWithSignal。
标签: swift reactive-programming reactive-swift