SignalProducer
producer
sを非同期に送信するがありますInt
。値を合計できます
producer.scan(0, +)
合計をリセットし、0
他> 10
の値が 1 秒間送信されていないとします。私の最初の試みは次のようになりました:
producer
.scan(0, +)
.flatMap(.latest) { n -> SignalProducer<Int, NoError> in
if n <= 10 {
return SignalProducer(value: n)
} else {
return SignalProducer.merge([
SignalProducer(value: n),
SignalProducer(value: 0).delay(1, on: QueueScheduler.main)
])
}
}
これは を正しく送信します0
が、 の状態をリセットしませんscan
。つまり、 send のシーケンス9, 8, long pause, 7
です9, 17, 0, 24
。
状態を正しくリセットする方法でこれら 2 つの概念を組み合わせる方法はありますか?