我正在尝试创建一个调度程序以使用一些数据。
调度程序必须能够:
我已经使用
MutableProperty
对手动消费进行了建模 let consume = MutableProperty<Void>()
我正在尝试使用
SignalProducer
对自动消费进行建模 let timer = SignalProducer<Void, NoError>
通过结合这两个生产者的最新值,我可以第一次使用该数据
SignalProducer.combineLatest(consume.producer, timer)
.take(first: 1)
.map() { _ in return () }
通过这种方式,生产者将通过手工消耗或自动消耗来发送值。
我不知道我将如何永久地做到这一点。
有人可以帮忙吗?
最佳答案
您可以使用ReactiveSwift
中定义的全局计时器功能来启动计时器
public func timer(interval: TimeInterval, on scheduler: DateSchedulerProtocol) -> SignalProducer<Date, NoError>
要将计时器与消耗属性结合使用:
let interval = 10.0
let timerSignal: SignalProducer<Date, NoError> = timer(interval: interval, on: QueueScheduler.main)
let consume = MutableProperty<Void>()
timerSignal.combineLatest(with: consume.producer).startWithValues { (date, v) in
print("triggered at time: \(date)")
}
这样,您可以通过在consumption上设置
value
属性或等待timer事件来手动触发打印块。