РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1361 of 1593 menu

Функция context.WithTimeoutCause

Функция context.WithTimeoutCause создает новый контекст, который автоматически отменяется по истечении указанного таймаута. В отличие от context.WithTimeout, эта функция позволяет задать пользовательскую ошибку, которая будет возвращена функцией context.Cause при отмене контекста по таймауту. Первый параметр функции - родительский контекст, второй - продолжительность таймаута, третий - ошибка-причина. Функция возвращает новый контекст и функцию отмены.

Синтаксис

context.WithTimeoutCause(ctx, timeout, cause)

Пример

Давайте создадим контекст с таймаутом 1 секунду и причиной "timeout occurred":

package main import ( "context" "fmt" "time" ) func main() { ctx, cancel := context.WithTimeoutCause( context.Background(), time.Second, fmt.Errorf("timeout occurred"), ) defer cancel() select { case <-time.After(2 * time.Second): fmt.Println("operation completed") case <-ctx.Done(): fmt.Println("error:", ctx.Err()) fmt.Println("cause:", context.Cause(ctx)) } }

Результат выполнения кода:

"error: context deadline exceeded" "cause: timeout occurred"

Пример

Давайте используем контекст с таймаутом в операции, которая выполняется быстрее таймаута:

package main import ( "context" "fmt" "time" ) func main() { ctx, cancel := context.WithTimeoutCause( context.Background(), time.Second, fmt.Errorf("operation timeout"), ) defer cancel() select { case <-time.After(500 * time.Millisecond): fmt.Println("operation completed successfully") case <-ctx.Done(): fmt.Println("error:", ctx.Err()) fmt.Println("cause:", context.Cause(ctx)) } }

Результат выполнения кода:

"operation completed successfully"

Смотрите также

  • функцию context.WithTimeout,
    которая создает контекст с таймаутом без указания причины
  • функцию context.WithDeadlineCause,
    которая создает контекст с дедлайном и причиной
  • функцию context.WithCancelCause,
    которая создает контекст с ручной отменой и причиной
  • функцию context.Cause,
    которая возвращает причину отмены контекста
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить