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 が完了するまで開始されるべきではありません。

呼び出す関数には呼び出しsetupがありstart()ます。

これのどこが間違っているのですか?

4

1 に答える 1

1

それは正しいようです!

または、すべての信号を連結できます。

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

あなたのタイプは であるため、Void出力される値はおそらく気にしません。ただし、これはセマンティクスが少し異なることに注意してください。 とは異なり、すべてのシグナルから値を出力しますthen

于 2015-12-09T02:09:55.693 に答える