Я хочу выполнить функцию, которая должна повторять ее содержимое каждые 60 секунд. Эту функцию следует вызывать 60 раз с задержкой запуска в 1 секунду на каждый вызов функции. Таким образом, через 1 минуту функция вызывалась 60 раз, и каждую секунду я получаю обновление от одной функции, потому что функции повторяют свое содержимое через 60 секунд. Я бы использовал фоновый поток для таких вызовов функций:
func callerfunc() {
DispatchQueue.global(qos: .background).async {
var callerhelper = 0
let timer2 = Timer(timeInterval: 1, repeats: true) { timer in
callerhelper += 1
if callerhelper > 60 {
timer.invalidate()
}
else {
syncfunction()
print("syncfunc called every second until 1 minute")
}
}
}
let runLoop = RunLoop.current
runLoop.add(timer2, forMode: .default)
runLoop.run()
}
}
func syncfunction {
DispatchQueue.global(qos: .background).async {
let timer3 = Timer(timeInterval: 60, repeats: true) { time in
print("task performed every 60 sec")
}
let runLoop = RunLoop.current
runLoop.add(timer3, forMode: .default)
runLoop.run()
}
}
Но код работает некорректно. Здесь ли идея многопоточности? Как я могу улучшить свой код?