Объект Future.never
Future, который никогда не завершается.
| Суперайтепы | |
|---|---|
| Тип самого себя |
Обработчики событий
Исходный код
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.
| Параметры типа |
|
|---|---|
| Параметры значения |
|
| Возвращаемое значение | future, которое будет завершено с тем же результатом, что и это |
| Классы определения | Future |
Исходный код
Асинхронно обрабатывает значение в future, как только оно станет доступным.
ВНИМАНИЕ: Не будет вызвано, если это future никогда не будет завершено или если оно завершится ошибкой.
Поскольку этот метод выполняется асинхронно и не возвращает значение, любые некритические исключения будут сообщены ExecutionContext.
| Параметры типа |
|
|---|---|
| Параметры значения |
|
| Классы определения | Future |
Исходный код
При завершении этого future, либо с исключением, либо со значением, применить предоставленную функцию.
Если future уже завершено, это будет применено немедленно или запланировано асинхронно.
Обратите внимание, что возвращаемое значение f будет проигнорировано.
Поскольку этот метод выполняется асинхронно и не возвращает значение, любые некритические исключения будут сообщены ExecutionContext.
Может быть зарегистрировано несколько обработчиков; нет гарантии, что они будут выполнены в определённом порядке.
Предоставленный обработчик всегда выполняется в предоставленном неявном ExecutionContext, хотя нет гарантии, что метод execute() на ExecutionContext будет вызван один раз на каждый обработчик или что execute() будет вызван в текущей нити. То есть, реализация может выполнять несколько обработчиков в группе в пределах одного execute() и может выполнять execute() немедленно или асинхронно. Завершение Future должно произойти *до* вызова обработчика.
| Параметры типа |
|
|---|---|
| Параметры значения |
|
| Классы определения | Future |
Опрос
Исходный код
final override def isCompleted: Boolean
Возвращает, завершено ли future значением или исключением.
Примечание: использование этого метода приводит к недетерминированным программам с потоком данных.
| Возвращаемое значение | true, если future было завершено, false в противном случае |
|---|---|
| Классы определения | Future |
Исходный код
Текущее значение этого Future.
Примечание: использование этого метода приводит к недетерминированным программам с потоком данных.
Если future не было завершено, возвращаемое значение будет None. Если future было завершено, значение будет Some(Success(t)) если оно содержало действительный результат или Some(Failure(error)) если оно содержало исключение.
| Возвращаемое значение | None, если |
|---|---|
| Классы определения | 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
| Параметры типа |
|
|---|---|
| Параметры значения |
|
| Возвращаемое значение | future, содержащее результат применения |
| Классы определения | Future |
Исходный код
Возвращаемое 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 |
Исходный код
Создаёт новую задачу, которая содержит результат этой задачи, если она была успешно завершена, или, если нет, результат задачи that если that завершена успешно. Если обе задачи завершились с ошибкой, полученная задача содержит объект исключения первой задачи.
Использование этого метода не приведёт к недетерминированному поведению конкурирующих программ.
Пример:
val f = Future { throw new RuntimeException("failed") }
val g = Future { 5 }
val h = f fallbackTo g
h foreach println // Eventually prints 5
| Параметры типа |
|
|---|---|
| Параметры значения |
|
| Возвращает | задачу |
| Определяющие классы | Future |
Исходный код
Создаёт новую задачу, отфильтровывая значение текущей задачи с помощью предиката.
Если текущая задача содержит значение, удовлетворяющее предикату, новая задача также будет содержать это значение. В противном случае, результирующая задача завершится с ошибкой 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
| Параметры значения |
|
|---|---|
| Возвращает | задачу |
| Определяющие классы | 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 } }
| Параметры типа |
|
|---|---|
| Параметры значения |
|
| Возвращает | задачу |
| Определяющие классы | Future |
Исходный код
Создаёт новую задачу с одной степенью вложенности, уплощенной. Этот метод эквивалентен flatMap(identity).
| Параметры типа |
|
|---|---|
| Определяющие классы | Future |
Исходный код
Создаёт новую задачу, применяя функцию к успешному результату этой задачи. Если эта задача завершается исключением, то новая задача также будет содержать это исключение.
Пример:
val f = Future { "The future" }
val g = f map { x: String => x + " is now!" }
Обратите внимание, что для понимания с помощью Future может быть включено обращение к map и/или flatMap и withFilter. См. scala.concurrent.Future#flatMap для примера такого понимания.
| Параметры типа |
|
|---|---|
| Параметры значения |
|
| Возвращает | задача |
| Определяющие классы | Future |
Исходный код
Создаёт новую задачу Future[S] которая завершается результатом этой Future если он соответствует стёртому типу S или ошибкой 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
| Параметры типа |
|
|---|---|
| Параметры значения |
|
| Возвращает | задача |
| Определяющие классы | 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
| Параметры типа |
|
|---|---|
| Параметры значения |
|
| Возвращает | задача |
| Определяющие классы | Future |
Исходный код
Создаёт новую задачу, применяя функцию 's' к успешному результату этой задачи или функцию 'f' к результату ошибки. Если при применении 's' или 'f' возникает любое некритическое исключение, это исключение будет передано в результирующую задачу.
| Параметры типа |
|
|---|---|
| Параметры значения |
|
| Возвращает | задачу |
| Определяющие классы | Future |
Source
Создаёт новый Future, применяя указанную функцию к результату этого Future. Если при применении функции 'f' возникает какое-либо некритичное исключение, это исключение будет передано в результирующее future.
| Параметры типа |
|
|---|---|
| Параметры значения |
|
| Возвращает | a |
| Классы определений | Future |
Source
final override def transformWith[S](f: Try[Nothing] => Future[S])(implicit executor: ExecutionContext): Future[S]
Создаёт новый Future, применяя указанную функцию, которая возвращает Future, к результату этого Future. Если при применении функции 'f' возникает какое-либо некритичное исключение, это исключение будет передано в результирующее future.
| Параметры типа |
|
|---|---|
| Параметры значения |
|
| Возвращает | a |
| Классы определений | Future |
Source
Используется в for-выражениях.
| Унаследовано от | Future |
|---|
Source
Комбинирует значения this и that future, создавая новое future, содержащее кортеж их результатов.
Если какое-либо из входных future завершается ошибкой, результирующее future завершается той же ошибкой, не дожидаясь завершения другого входного future.
Если применение f вызывает некритическую ошибку, результирующее future завершается этой ошибкой.
| Параметры типа |
|
|---|---|
| Параметры значения |
|
| Возвращает | a |
| Классы определений | 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 завершается этой ошибкой.
| Параметры типа |
|
|---|---|
| Параметры значения |
|
| Возвращает | a |
| Классы определений | Future |
Конкретные методы
Source
Ожидание состояния "завершён" этого Awaitable
Этот метод не следует вызывать напрямую; используйте Await.ready вместо этого.
| Параметры значения |
|
|---|---|
| Возвращает | это |
| Исключения |
|
| Классы определений | Awaitable |
Source
Ожидание и возвращение результата (типа T) этого Awaitable
Этот метод не следует вызывать напрямую; используйте Await.result вместо этого.
| Параметры значения |
|
|---|---|
| Возвращает | значение результата, если |
| Исключения |
|
| Классы определений | Awaitable |
Source
Возвращает строковое представление объекта.
Стандартное представление зависит от платформы.
| Возвращает | строковое представление объекта. |
|---|---|
| Классы определений | 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