gka*_*kas 3 ios reactive-cocoa swift
我正在尝试创建一个调度程序来消耗一些数据。
调度程序必须能够:
我用一个模型模拟了手动消耗MutableProperty
let consume = MutableProperty<Void>()
Run Code Online (Sandbox Code Playgroud)
我正在尝试用一个模型来模拟自动消耗SignalProducer
let timer = SignalProducer<Void, NoError>
Run Code Online (Sandbox Code Playgroud)
我可以通过组合这两个生产者的最新值来第一次需要使用该数据,例如
SignalProducer.combineLatest(consume.producer, timer)
.take(first: 1)
.map() { _ in return () }
Run Code Online (Sandbox Code Playgroud)
这样,无论哪个先发生,生产者都会发送一个值,无论是手动消耗还是自动消耗。
我不知道我怎样才能永远做到这一点。
有人可以帮忙吗?
您可以使用定义在中的全局计时器函数来启动计时器ReactiveSwift
public func timer(interval: TimeInterval, on scheduler: DateSchedulerProtocol) -> SignalProducer<Date, NoError>
Run Code Online (Sandbox Code Playgroud)
要将计时器与 Consumer 属性结合起来:
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)")
}
Run Code Online (Sandbox Code Playgroud)
这样,您可以通过设置value消耗属性或等待计时器事件来手动触发打印块。
| 归档时间: |
|
| 查看次数: |
3212 次 |
| 最近记录: |