Функция time.AfterFunc
Функция time.AfterFunc планирует выполнение переданной функции
через заданный промежуток времени. Она возвращает указатель на
time.Timer, который можно использовать для отмены запланированной
задачи до ее выполнения. Первым параметром функция принимает
интервал времени типа time.Duration, вторым - функцию
без параметров, которая будет вызвана по истечении этого интервала.
Синтаксис
timer := time.AfterFunc(duration, callback)
Пример
Давайте запланируем вывод сообщения через 2 секунды:
package main
import (
"fmt"
"time"
)
func main() {
timer := time.AfterFunc(2*time.Second, func() {
fmt.Println("Прошло 2 секунды")
})
<-time.After(3 * time.Second)
timer.Stop()
}
Результат выполнения кода:
"Прошло 2 секунды"
Пример
Давайте отменим запланированную задачу до ее выполнения:
package main
import (
"fmt"
"time"
)
func main() {
timer := time.AfterFunc(1*time.Second, func() {
fmt.Println("Задача выполнена")
})
// Отменяем задачу через 500 миллисекунд
time.Sleep(500 * time.Millisecond)
stopped := timer.Stop()
if stopped {
fmt.Println("Задача отменена")
}
<-time.After(2 * time.Second)
}
Результат выполнения кода:
"Задача отменена"
Пример
Давайте запланируем выполнение функции с задержкой в 3 секунды:
package main
import (
"fmt"
"time"
)
func main() {
timer := time.AfterFunc(3*time.Second, func() {
fmt.Println("Выполнено через 3 секунды")
})
// Ждем завершения
<-time.After(4 * time.Second)
timer.Stop()
}
Результат выполнения кода:
"Выполнено через 3 секунды"
Смотрите также
-
функцию
time.After,
которая возвращает канал, по которому приходит значение после задержки -
функцию
time.NewTimer,
которая создает новый таймер для отложенного выполнения -
функцию
time.Sleep,
которая приостанавливает выполнение горутины на указанное время -
функцию
time.Timer.Stop,
которая останавливает таймер и предотвращает выполнение запланированной функции