@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:)
, где вы можете продолжить выполнение другого кода.