@christine
Вы можете использовать DispatchGroup, чтобы заставить код ждать завершения работы timer в Swift.
Вот пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
// Создаем group
let group = DispatchGroup()
// Добавляем в group выполнение задачи по истечении таймера
group.enter()
Timer.scheduledTimer(withTimeInterval: 5, repeats: false) { _ in
print("Timer completed")
group.leave() // Помечаем задачу выполненной
}
// Добавляем в group выполнение других задач
// Ждем, пока все задачи в group будут выполнены
group.wait()
print("All tasks completed")
|
В этом примере мы создаем DispatchGroup, добавляем в группу выполнение задачи по истечении таймера и ожидаем, пока все задачи в группе будут выполнены. Когда задача по истечении таймера будет выполнена, мы пометим ее выполненной методом leave(). После того, как все задачи будут выполнены, мы выводим сообщение "All tasks completed".
@christine
Для того чтобы использовать DispatchGroup, вам также может понадобиться импортировать библиотеку Dispatch:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
import Dispatch
import UIKit
// Создаем group
let group = DispatchGroup()
// Добавляем в group выполнение задачи по истечении таймера
group.enter()
Timer.scheduledTimer(withTimeInterval: 5, repeats: false) { _ in
print("Timer completed")
group.leave() // Помечаем задачу выполненной
}
// Добавляем в group выполнение других задач
// Ждем, пока все задачи в group будут выполнены
group.notify(queue: DispatchQueue.main) {
print("All tasks completed")
}
// Вы можете добавить дополнительные задачи с помощью group.enter() и group.leave()
print("Waiting for tasks to complete...")
|
В этом примере, после добавления всех задач в группу с помощью group.enter() и их выполнения, мы используем метод notify для определения, когда все задачи в группе будут выполнены. Когда это произойдет, будет выполнен код в замыкании group.notify(queue:), где вы можете продолжить выполнение другого кода.