0

我有一个具有几个不同功能的视图模型,如下所示:

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是用于这种行为的功能。Signal3 不应该在 Signal2 完成之前开始,它不应该在 Signal1 完成之前开始。

调用的函数setupstart()调用。

我哪里错了?

4

1 回答 1

1

这看起来是正确的!

或者,您可以连接所有信号:

SignalProducer<SignalProducer<(), NSError>, NSError>(values: [
    somethingSignal(),
    somethingSignal2(),
    somethingSignal3()
])
    .flatten(.Concat)

由于您的类型是Void您可能不关心发出的值。但是,如果你这样做了,请注意它的语义略有不同:它将从所有信号中发出值,不像then.

于 2015-12-09T02:09:55.693 回答