Spec-Zone.ru › Scala 3.2

Объект Await.Await

Исходный код

объект Await

Await используется для обеспечения правильной обработки блокировок для Awaitable экземпляров.

Хотя иногда полезно, например, для тестирования, рекомендуется избегать использования Await всякий раз, когда это возможно — предпочитая комбинаторы и/или обратные вызовы. Методы Await result и ready заблокируют выполнение потока вызова, пока не вернутся, что приведет к ухудшению производительности и, возможно, проблемам с тупиком.

Суперобъекты
класс Object
тракт Matchable
класс Any
Тип объекта
Await.type

Конкретные методы

Исходный код
final def ready[T](awaitable: Awaitable[T], atMost: Duration): Awaitable[T]

Ожидание состояния "завершено" Awaitable.

Хотя этот метод блокирующий, внутреннее использование blocking гарантирует, что подлежащему ExecutionContext предоставляется возможность правильно управлять блокировкой.

ПРЕДУПРЕЖДЕНИЕ: Крайне не рекомендуется использовать длительные таймауты, так как прогресс вызывающего потока будет приостановлен — заблокирован — до тех пор, пока Awaitable не станет готов или не истечёт таймаут.

Параметры значений
atMost

максимальное время ожидания, которое может быть отрицательным (ожидание не выполняется), Duration.Inf для неограниченного ожидания или конечной положительной продолжительности

awaitable

Awaitable, которое требуется ожидать

Возвращаемое значение

awaitable

Исключения
IllegalArgumentException

если atMost равен Duration.Undefined

InterruptedException

если текущий поток прерывается во время ожидания

TimeoutException

если после ожидания указанного времени это Awaitable все ещё не готово

Исходный код
final def result[T](awaitable: Awaitable[T], atMost: Duration): T

Ожидание и возврат результата (типа T) Awaitable.

Хотя этот метод блокирующий, внутреннее использование blocking гарантирует, что подлежащему ExecutionContext предоставляется возможность правильно управлять блокировкой.

ПРЕДУПРЕЖДЕНИЕ: Крайне не рекомендуется использовать длительные таймауты, так как прогресс вызывающего потока будет приостановлен — заблокирован — до тех пор, пока у Awaitable не будет результата или не истечёт таймаут.

Параметры значений
atMost

максимальное время ожидания, которое может быть отрицательным (ожидание не выполняется), Duration.Inf для неограниченного ожидания или конечной положительной продолжительности

awaitable

Awaitable, которое требуется ожидать

Возвращаемое значение

значение результата, если awaitable завершено в течение заданного максимального времени ожидания

Исключения
IllegalArgumentException

если atMost равен Duration.Undefined

InterruptedException

если текущий поток прерывается во время ожидания

TimeoutException

если после ожидания указанного времени awaitable все ещё не готово

© 2002-2022 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://scala-lang.org/api/3.2.0/scala/concurrent/Await$.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API