我有一个视图模型,其中包含几个不同的函数:
func somethingSignal() -> SignalProducer<Void, NSError>
{
return SignalProducer {
sink, disposable in
sink.sendNext(blabla)
sink.sendCompleted()
}
}
现在,这些信号需要按顺序运行 - 在完成任务之前无法启动。因此,我有另一个叫做的函数:
func setup() -> SignalProducer<Void, NSError>
{
return somethingSignal()
.then(somethingSignal2())
.then(somethingSignal3())
}
我的印象是then
是用于此类行为的函数。在Signal2完成之前,Signal3不应该开始,在Signal1完成之前不应该开始。
调用setup
的函数有start()
次调用。
我在哪里错了?
答案 0 :(得分:1)
看起来不错!
或者,您可以连接所有信号:
SignalProducer<SignalProducer<(), NSError>, NSError>(values: [
somethingSignal(),
somethingSignal2(),
somethingSignal3()
])
.flatten(.Concat)
由于您的类型为Void
,因此您可能并不关心所发出的值。但是,如果你这样做,请注意它的语义略有不同:它将从所有信号中发出值,与then
不同。