Spec-Zone.ru › Scala 3.2

Объект Future.never

Исходный код

object never extends Future[Nothing]

Future, который никогда не завершается.

Суперайтепы
trait Future[Nothing]
trait Awaitable[Nothing]
class Object
trait Matchable
class Any
Тип самого себя
never.type

Обработчики событий

Исходный код
final override def andThen[U](pf: PartialFunction[Try[Nothing], U])(implicit executor: ExecutionContext): Future[Nothing]

Применяет функцию с побочным эффектом к результату этого future и возвращает новое future с результатом этого future.

Этот метод позволяет обеспечить выполнение обработчиков в заданном порядке.

Обратите внимание, что если один из цепочечных andThen обработчиков вызывает исключение, это исключение не передаётся последующим andThen обработчикам. Вместо этого последующие andThen обработчики получают исходное значение этого future.

Следующий пример выводит 5:

val f = Future { 5 }
f andThen {
  case r => throw new RuntimeException("runtime exception")
} andThen {
  case Failure(t) => println(t)
  case Success(v) => println(v)
}

Поскольку этот метод выполняется асинхронно и не возвращает значение, любые некритические исключения будут сообщены ExecutionContext.

Параметры типа
U

используется только для принятия любого типа возвращаемого значения заданной PartialFunction

Параметры значения
pf

частичная функция, которая будет условно применена к результату этого Future

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

future, которое будет завершено с тем же результатом, что и это Future, но после выполнения PartialFunction.

Классы определения Future

Исходный код
final override def foreach[U](f: Nothing => U)(implicit executor: ExecutionContext): Unit

Асинхронно обрабатывает значение в future, как только оно станет доступным.

ВНИМАНИЕ: Не будет вызвано, если это future никогда не будет завершено или если оно завершится ошибкой.

Поскольку этот метод выполняется асинхронно и не возвращает значение, любые некритические исключения будут сообщены ExecutionContext.

Параметры типа
U

используется только для принятия любого типа возвращаемого значения заданной функции обратного вызова

Параметры значения
f

функция, которая будет выполнена, если это future завершится результатом, возвращаемое значение f будет проигнорировано.

Классы определения Future

Исходный код
final override def onComplete[U](f: Try[Nothing] => U)(implicit executor: ExecutionContext): Unit

При завершении этого future, либо с исключением, либо со значением, применить предоставленную функцию.

Если future уже завершено, это будет применено немедленно или запланировано асинхронно.

Обратите внимание, что возвращаемое значение f будет проигнорировано.

Поскольку этот метод выполняется асинхронно и не возвращает значение, любые некритические исключения будут сообщены ExecutionContext.

Может быть зарегистрировано несколько обработчиков; нет гарантии, что они будут выполнены в определённом порядке.

Предоставленный обработчик всегда выполняется в предоставленном неявном ExecutionContext, хотя нет гарантии, что метод execute() на ExecutionContext будет вызван один раз на каждый обработчик или что execute() будет вызван в текущей нити. То есть, реализация может выполнять несколько обработчиков в группе в пределах одного execute() и может выполнять execute() немедленно или асинхронно. Завершение Future должно произойти *до* вызова обработчика.

Параметры типа
U

используется только для принятия любого типа возвращаемого значения заданной функции обратного вызова

Параметры значения
f

функция, которая будет выполнена при завершении этого Future

Классы определения Future

Опрос

Исходный код
final override def isCompleted: Boolean

Возвращает, завершено ли future значением или исключением.

Примечание: использование этого метода приводит к недетерминированным программам с потоком данных.

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

true, если future было завершено, false в противном случае

Классы определения Future

Исходный код
final override def value: Option[Try[Nothing]]

Текущее значение этого Future.

Примечание: использование этого метода приводит к недетерминированным программам с потоком данных.

Если future не было завершено, возвращаемое значение будет None. Если future было завершено, значение будет Some(Success(t)) если оно содержало действительный результат или Some(Failure(error)) если оно содержало исключение.

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

None, если Future не завершено, Some(value), если оно было.

Классы определения Future

Преобразования

Исходный код
final override def collect[S](pf: PartialFunction[Nothing, S])(implicit executor: ExecutionContext): Future[S]

Создаёт новое future, отображая значение текущего future, если заданная частичная функция определена для этого значения.

Если текущее future содержит значение, для которого частичная функция определена, новое future также будет содержать это значение. В противном случае результирующее future завершится ошибкой с NoSuchElementException.

Если текущее future завершается ошибкой, то результирующее future также завершается ошибкой.

Пример:

val f = Future { -5 }
val g = f collect {
  case x if x < 0 => -x
}
val h = f collect {
  case x if x > 0 => x * 2
}
g foreach println // Eventually prints 5
Await.result(h, Duration.Zero) // throw a NoSuchElementException
Параметры типа
S

тип возвращаемого Future

Параметры значения
pf

частичная функция, которая применяется к результату успешного выполнения этого Future

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

future, содержащее результат применения PartialFunction или NoSuchElementException

Классы определения Future

Исходный код
final override def failed: Future[Throwable]

Возвращаемое Future будет успешно завершено с исключением Throwable исходного Future если исходное Future завершится с ошибкой.

Если исходное Future успешно завершается, возвращаемое Future завершится с исключением NoSuchElementException.

Это future может содержать объект throwable, что означает, что future завершилось ошибкой. Futures, полученные через комбинаторы, имеют то же исключение, что и будущее, из которого они были получены. Следующие объекты throwable не содержатся в future: - Error - критические ошибки не содержатся в futures - InterruptedException - не содержатся в futures - все scala.util.control.ControlThrowable кроме NonLocalReturnControl - не содержатся в futures

Вместо этого future завершается с ExecutionException, имеющим одно из вышеперечисленных исключений в качестве причины. Если future завершается с scala.runtime.NonLocalReturnControl, оно завершается со значением из этого throwable.

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

завершённое ошибкой projection этого Future.

Классы определения Future

Исходный код
final override def fallbackTo[U](that: Future[U]): Future[U]

Создаёт новую задачу, которая содержит результат этой задачи, если она была успешно завершена, или, если нет, результат задачи that если that завершена успешно. Если обе задачи завершились с ошибкой, полученная задача содержит объект исключения первой задачи.

Использование этого метода не приведёт к недетерминированному поведению конкурирующих программ.

Пример:

val f = Future { throw new RuntimeException("failed") }
val g = Future { 5 }
val h = f fallbackTo g
h foreach println // Eventually prints 5
Параметры типа
U

тип другой Future и полученного Future

Параметры значения
that

задача Future, результат которой мы хотим использовать, если эта Future завершится неудачно.

Возвращает

задачу Future с успешным результатом этой или задачи that Future или ошибкой этой Future если обе завершились неудачно

Определяющие классы Future

Исходный код
final override def filter(p: Nothing => Boolean)(implicit executor: ExecutionContext): Future[Nothing]

Создаёт новую задачу, отфильтровывая значение текущей задачи с помощью предиката.

Если текущая задача содержит значение, удовлетворяющее предикату, новая задача также будет содержать это значение. В противном случае, результирующая задача завершится с ошибкой NoSuchElementException.

Если текущая задача завершается ошибкой, то и результирующая задача также завершится ошибкой.

Пример:

val f = Future { 5 }
val g = f filter { _ % 2 == 1 }
val h = f filter { _ % 2 == 0 }
g foreach println // Eventually prints 5
Await.result(h, Duration.Zero) // throw a NoSuchElementException
Параметры значения
p

предикат, применяемый к успешному результату этой Future

Возвращает

задачу Future которая будет содержать успешный результат этой Future если он удовлетворяет предикату или NoSuchElementException

Определяющие классы Future

Исходный код
final override def flatMap[S](f: Nothing => Future[S])(implicit executor: ExecutionContext): Future[S]

Создаёт новую задачу, применяя функцию к успешному результату этой задачи и возвращает результат функции как новую задачу. Если эта задача завершается исключением, то новая задача также будет содержать это исключение.

Пример:

val f = Future { 5 }
val g = Future { 3 }
val h = for {
  x: Int <- f // returns Future(5)
  y: Int <- g // returns Future(3)
} yield x + y

преобразуется в:

f flatMap { (x: Int) => g map { (y: Int) => x + y } }
Параметры типа
S

тип возвращаемой Future

Параметры значения
f

функция, которая будет применена к успешному результату этой Future

Возвращает

задачу Future которая будет завершена результатом применения функции

Определяющие классы Future

Исходный код
final override def flatten[S](implicit ev: Nothing <:< Future[S]): Future[S]

Создаёт новую задачу с одной степенью вложенности, уплощенной. Этот метод эквивалентен flatMap(identity).

Параметры типа
S

тип возвращаемой Future

Определяющие классы Future

Исходный код
final override def map[S](f: Nothing => S)(implicit executor: ExecutionContext): Future[S]

Создаёт новую задачу, применяя функцию к успешному результату этой задачи. Если эта задача завершается исключением, то новая задача также будет содержать это исключение.

Пример:

val f = Future { "The future" }
val g = f map { x: String => x + " is now!" }

Обратите внимание, что для понимания с помощью Future может быть включено обращение к map и/или flatMap и withFilter. См. scala.concurrent.Future#flatMap для примера такого понимания.

Параметры типа
S

тип возвращаемой Future

Параметры значения
f

функция, которая будет применена к успешному результату этой Future

Возвращает

задача Future которая будет завершена результатом применения функции

Определяющие классы Future

Исходный код
final override def mapTo[S](implicit tag: ClassTag[S]): Future[S]

Создаёт новую задачу Future[S] которая завершается результатом этой Future если он соответствует стёртому типу S или ошибкой ClassCastException в противном случае.

Параметры типа
S

тип возвращаемой Future

Параметры значения
tag

тег ClassTag который будет использован для приведения результата этой Future

Возвращает

задача Future содержащая приведённый результат этой Future или ошибку ClassCastException в противном случае

Определяющие классы Future

Исходный код
final override def recover[U](pf: PartialFunction[Throwable, U])(implicit executor: ExecutionContext): Future[U]

Создаёт новую задачу, которая обработает любые соответствующие исключения, которые может содержать эта задача. Если соответствий нет, или если эта задача содержит допустимый результат, то новая задача будет содержать тот же результат.

Пример:

Future (6 / 0) recover { case e: ArithmeticException => 0 } // result: 0
Future (6 / 0) recover { case e: NotFoundException   => 0 } // result: exception
Future (6 / 2) recover { case e: ArithmeticException => 0 } // result: 3
Параметры типа
U

тип возвращаемой Future

Параметры значения
pf

функция PartialFunction которая применяется, если эта Future завершается неудачно

Возвращает

задача Future с успешным значением этой Future или результатом PartialFunction

Определяющие классы Future

Исходный код
final override def recoverWith[U](pf: PartialFunction[Throwable, Future[U]])(implicit executor: ExecutionContext): Future[U]

Создаёт новую задачу, которая обработает любые соответствующие исключения, которые может содержать эта задача, назначив ей значение другой задачи.

Если соответствий нет, или если эта задача содержит допустимый результат, то новая задача будет содержать тот же результат.

Пример:

val f = Future { Int.MaxValue }
Future (6 / 0) recoverWith { case e: ArithmeticException => f } // result: Int.MaxValue
Параметры типа
U

тип возвращаемой Future

Параметры значения
pf

функция PartialFunction которая применяется, если эта Future завершается неудачно

Возвращает

задача Future с успешным значением этой Future или результатом Future возвращённой PartialFunction

Определяющие классы Future

Исходный код
final override def transform[S](s: Nothing => S, f: Throwable => Throwable)(implicit executor: ExecutionContext): Future[S]

Создаёт новую задачу, применяя функцию 's' к успешному результату этой задачи или функцию 'f' к результату ошибки. Если при применении 's' или 'f' возникает любое некритическое исключение, это исключение будет передано в результирующую задачу.

Параметры типа
S

тип возвращаемой Future

Параметры значения
f

функция, преобразующая ошибку получателя в ошибку возвращаемой задачи

s

функция, преобразующая успешный результат получателя в успешный результат возвращаемой задачи

Возвращает

задачу Future которая будет завершена преобразованным значением

Определяющие классы Future

Source
final override def transform[S](f: Try[Nothing] => Try[S])(implicit executor: ExecutionContext): Future[S]

Создаёт новый Future, применяя указанную функцию к результату этого Future. Если при применении функции 'f' возникает какое-либо некритичное исключение, это исключение будет передано в результирующее future.

Параметры типа
S

тип возвращаемого Future

Параметры значения
f

функция, преобразующая результат этого future

Возвращает

a Future, который будет завершён преобразованным значением

Классы определений Future

Source
final override def transformWith[S](f: Try[Nothing] => Future[S])(implicit executor: ExecutionContext): Future[S]

Создаёт новый Future, применяя указанную функцию, которая возвращает Future, к результату этого Future. Если при применении функции 'f' возникает какое-либо некритичное исключение, это исключение будет передано в результирующее future.

Параметры типа
S

тип возвращаемого Future

Параметры значения
f

функция, преобразующая результат этого future

Возвращает

a Future, который будет завершён преобразованным значением

Классы определений Future

Source
final def withFilter(p: Nothing => Boolean)(implicit executor: ExecutionContext): Future[T]

Используется в for-выражениях.

Унаследовано от Future

Source
final override def zip[U](that: Future[U]): Future[(Nothing, U)]

Комбинирует значения this и that future, создавая новое future, содержащее кортеж их результатов.

Если какое-либо из входных future завершается ошибкой, результирующее future завершается той же ошибкой, не дожидаясь завершения другого входного future.

Если применение f вызывает некритическую ошибку, результирующее future завершается этой ошибкой.

Параметры типа
U

тип другого Future

Параметры значения
that

другое Future

Возвращает

a Future, содержащий результаты обоих future или ошибку первого из них, которое завершилось ошибкой

Классы определений Future

Source
final override def zipWith[U, R](that: Future[U])(f: (Nothing, U) => R)(implicit executor: ExecutionContext): Future[R]

Комбинирует значения this и that future, используя функцию f, и создаёт новое future, содержащее результат.

Если какое-либо из входных future завершается ошибкой, результирующее future завершается той же ошибкой, не дожидаясь завершения другого входного future.

Если применение f вызывает некритическую ошибку, результирующее future завершается этой ошибкой.

Параметры типа
R

тип результирующего Future

U

тип другого Future

Параметры значения
f

функция для применения к результатам this и that

that

другое Future

Возвращает

a Future, содержащий результат применения f к результатам this и that

Классы определений Future

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

Source
final override def ready(atMost: Duration)(implicit permit: CanAwait): never.type.this.type

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

Этот метод не следует вызывать напрямую; используйте Await.ready вместо этого.

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

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

Возвращает

это Awaitable

Исключения
IllegalArgumentException

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

InterruptedException

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

TimeoutException

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

Классы определений Awaitable

Source
final override def result(atMost: Duration)(implicit permit: CanAwait): Nothing

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

Этот метод не следует вызывать напрямую; используйте Await.result вместо этого.

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

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

Возвращает

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

Исключения
IllegalArgumentException

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

InterruptedException

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

TimeoutException

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

Классы определений Awaitable

Source
final override def toString: String

Возвращает строковое представление объекта.

Стандартное представление зависит от платформы.

Возвращает

строковое представление объекта.

Классы определений Any

© 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/Future$$never$.html

Spec-Zone.ru

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