Как заставить код ждать завершения работы timer в swift?

Пользователь

от christine , в категории: Swift , 2 года назад

Как заставить код ждать завершения работы timer в swift?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от hermina.hauck , 2 года назад

@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".

Пользователь

от vladimir , 6 месяцев назад

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