Я хочу проверить, что сигнал срабатывает каждые 6 секунд. Мой код выглядит так:
class DataStore {
var clinics: Int { return clinicsSignal.lastDataFired ?? 0 }
let clinicsSignal = Signal<Int>(retainLastData: true)
var timer: Timer?
init() {
}
func load() {
self.clinicsSignal.fire(0)
DispatchQueue.main.async { [weak self] in
self!.timer?.invalidate()
self!.timer = Timer.scheduledTimer(withTimeInterval: 6.0, repeats: true) { [weak self] _ in
self?.clinicsSignal.fire(9)
}
}
}
}
Мой тестовый код выглядит так:
func testRefresh() {
var dataStore: DataStore = DataStore()
dataStore.clinicsSignal.subscribeOnce(with: self) {
print("clinics signal = \($0)")
dataStore.clinicsSignal.fire(0)
}
dataStore.load()
sleep(30)
print("clinics3 = \(dataStore.clinics)")
}
Когда я сплю в течение 30 секунд, код таймера не запускается снова через 30 секунд, поэтому он не запускается раз в 6 секунд, как это должно быть. Любая идея о том, как проверить этот код в таймере, получает удар в определенное время? Спасибо.