我有一个SignalProducer
producer
异步发送Int
s的。我可以将这些值与
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
。即,一系列9, 8, long pause, 7
发送9, 17, 0, 24
。
有没有办法以正确重置状态的方式结合这两个概念?