我正在尝试创建日期调度程序以观察某些事件。但这行不通。我看过
协议DateScheduler
并且据说action将在某些方法protocol DateScheduler中的currentDate处发生。我尝试在10秒后执行此操作。下面是我的自定义时间表的示例。
class SomeDateScheduler : DateScheduler {
var currentDate: Date
init() {
self.currentDate = Date(timeIntervalSinceNow: 10)
}
func schedule(after date: Date, action: @escaping () -> Void) -> Disposable? {
print(#function)
print(date)
return nil
}
func schedule(after date: Date, interval: DispatchTimeInterval, leeway: DispatchTimeInterval, action: @escaping () -> Void) -> Disposable? {
print(#function)
print(date)
print(interval)
print(leeway)
return nil
}
func schedule(_ action: @escaping () -> Void) -> Disposable? {
print(#function)
return nil
}
}
然后创建绑定以观察事件
private func testSchedular() {
let schedular = SomeDateScheduler()
reactive.makeBindingTarget { appDeleg, value in
print("SUCCESS")
print(value)
} <~ signalSchedular.observe(on: schedular)
DispatchQueue.main.async { [observerSchedular] in
observerSchedular.send(value: "Hello World")
observerSchedular.sendCompleted()
}
}
我正在将其添加到AppDelegate中。 ObserverSchedular和signalSchedular是全局属性。请向我解释如何调用所有方法DateScheduler。
我已经知道我在哪里犯了错误。要解决此问题,我接下来要做:
已创建绑定以便在didFinishLaunchingWithOptions
中进行观察
reactive.makeBindingTarget { appDeleg, value in
print("SUCCESS")
print(value)
} <~ signalSchedular.customObserve(on: schedular, interval: 10, leeway: 1)
private let (signalSchedular, observerSchedular) = Signal<String, Never>.pipe(),
let schedular = SomeDateScheduler()