如何安排时间表?

问题描述 投票:0回答:1

我正在尝试创建日期调度程序以观察某些事件。但这行不通。我看过

协议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中。 ObserverSchedularsignalSchedular是全局属性。请向我解释如何调用所有方法DateScheduler

ios swift reactive-cocoa reactive-swift
1个回答
0
投票

我已经知道我在哪里犯了错误。要解决此问题,我接下来要做:

  1. 已创建的自定义observe(on: Schedular)。所以看起来像这样:enter image description here

  2. 已创建绑定以便在didFinishLaunchingWithOptions中进行观察

    reactive.makeBindingTarget { appDeleg, value in
        print("SUCCESS")
        print(value)
        } <~ signalSchedular.customObserve(on: schedular, interval: 10, leeway: 1)
    
  3. 并模拟异步代码enter image description here
  4. 定义的全局属性private let (signalSchedular, observerSchedular) = Signal<String, Never>.pipe(), let schedular = SomeDateScheduler()
  5. 更改自定义日期的时间表enter image description here
© www.soinside.com 2019 - 2024. All rights reserved.