Spec-Zone.ru › Scala 2.12 Library

Трейт scala.concurrent.Future

Компаньон объект Future

трейт Future[+T] extends Awaitable[T]

A Future представляет собой значение, которое может или не может *в данный момент* быть доступно, но будет доступно в какой-то момент, или исключение, если это значение не могло быть сделано доступным.

Асинхронные вычисления, которые генерируют future, создаются с помощью вызова Future.apply и вычисляются с использованием предоставленного ExecutionContext, который может быть основан на пуле потоков.

import ExecutionContext.Implicits.global
val s = "Hello"
val f: Future[String] = Future {
  s + " future!"
}
f foreach {
  msg => println(msg)
}
Источник
Future.scala
См. также

Futures и Promises

Линейные супертипы
Известные подклассы

Члены-значения абстрактные

abstract def isCompleted: Boolean

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

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

returns

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

abstract def onComplete[U](f: (Try[T]) ⇒ U)(implicit executor: ExecutionContext): Unit

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

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

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

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

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

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

U

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

f

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

abstract def ready(atMost: Duration)(implicit permit: CanAwait): Future.this.type

Дождитесь состояния "завершено" этого Awaitable.

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

atMost

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

returns

это Awaitable

Definition Classes
Awaitable
Annotations
@throws( clazz = classOf[TimeoutException] ) @throws( clazz = classOf[InterruptedException] )
Исключения

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

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

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

abstract def result(atMost: Duration)(implicit permit: CanAwait): T

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

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

atMost

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

returns

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

Definition Classes
Awaitable
Annotations
@throws( clazz = classOf[TimeoutException] ) @throws( clazz = classOf[InterruptedException] )
Исключения

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

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

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

abstract def transform[S](f: (Try[T]) ⇒ Try[S])(implicit executor: ExecutionContext): Future[S]

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

S

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

f

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

returns

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

abstract def transformWith[S](f: (Try[T]) ⇒ Future[S])(implicit executor: ExecutionContext): Future[S]

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

S

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

f

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

returns

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

abstract def value: Option[Try[T]]

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

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

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

returns

None если Future не был завершён, Some если был.

Члены-значения (Concrete Value Members)

final def !=(arg0: Any): Boolean

Проверка двух объектов на неравенство.

возвращает

true если !(this == that), в противном случае false.

Определяющие классы
AnyRef → Any

final def ##(): Int

Эквивалентно x.hashCode за исключением упакованных числовых типов и null. Для числовых типов возвращает хэш-значение, согласованное с равенством значений: если два экземпляра типа значения сравниваются как true, тогда ## для каждого из них вернёт одинаковое хэш-значение. Для null возвращает хэш-код, где null.hashCode вызывает NullPointerException.

возвращает

хэш-значение, согласованное с ==

Определяющие классы
AnyRef → Any

def +(other: String): String

Неявный
Этот член добавлен неявным преобразованием из Future[T] в any2stringadd[Future[T]], выполненное методом any2stringadd в scala.Predef.
Определяющие классы
any2stringadd

def ->[B](y: B): (Future[T], B)

Неявный
Этот член добавлен неявным преобразованием из Future[T] в ArrowAssoc[Future[T]], выполненное методом ArrowAssoc в scala.Predef.
Определяющие классы
ArrowAssoc
Аннотации
@inline()

final def ==(arg0: Any): Boolean

Выражение x == that эквивалентно if (x eq null) that eq null else x.equals(that).

возвращает

true если объект-получатель эквивалентен аргументу; false в противном случае.

Определяющие классы
AnyRef → Any

def andThen[U](pf: PartialFunction[Try[T], U])(implicit executor: ExecutionContext): Future[T]

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

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

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

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

val f = Future { 5 }
f andThen {
  case r => sys.error("runtime exception")
} andThen {
  case Failure(t) => println(t)
  case Success(v) => println(v)
}

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

U

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

pf

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

возвращает

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

final def asInstanceOf[T0]: T0

Преобразовать объект-получатель к типу T0.

Обратите внимание, что успех преобразования во время выполнения зависит от семантики стирания Scala. Поэтому выражение 1.asInstanceOf[String] выбросит ClassCastException во время выполнения, в то время как выражение List(1).asInstanceOf[List[String]] не выбросит. В последнем примере, так как тип аргумента стёрся при компиляции, невозможно проверить, соответствуют ли содержимое списка запрошенному типу.

возвращает

объект-получатель.

Определяющие классы
Any
Исключения

ClassCastException если объект-получатель не является экземпляром стираемого типа T0.

def clone(): AnyRef

Создаёт копию объекта-получателя.

По умолчанию, реализация метода clone зависит от платформы.

возвращает

копию объекта-получателя.

Атрибуты
protected[lang]
Определяющие классы
AnyRef
Аннотации
@throws( ... ) @native()
Примечание

не указан в SLS как член AnyRef

def collect[S](pf: PartialFunction[T, S])(implicit executor: ExecutionContext): Future[S]

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

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

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

Пример:

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

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

возвращает

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

def ensuring(cond: (Future[T]) ⇒ Boolean, msg: ⇒ Any): Future[T]

Неявный
Этот член добавлен неявным преобразованием из Future[T] в Ensuring[Future[T]], выполненным методом Ensuring в scala.Predef.
Классы определения
Ensuring

def ensuring(cond: (Future[T]) ⇒ Boolean): Future[T]

Неявный
Этот член добавлен неявным преобразованием из Future[T] в Ensuring[Future[T]], выполненным методом Ensuring в scala.Predef.
Классы определения
Ensuring

def ensuring(cond: Boolean, msg: ⇒ Any): Future[T]

Неявный
Этот член добавлен неявным преобразованием из Future[T] в Ensuring[Future[T]], выполненным методом Ensuring в scala.Predef.
Классы определения
Ensuring

def ensuring(cond: Boolean): Future[T]

Неявный
Этот член добавлен неявным преобразованием из Future[T] в Ensuring[Future[T]], выполненным методом Ensuring в scala.Predef.
Классы определения
Ensuring

final def eq(arg0: AnyRef): Boolean

Проверяет, является ли аргумент (that) ссылкой на объект-приёмник (this).

Метод eq реализует отношение эквивалентности на не-нулевых экземплярах AnyRef, и имеет три дополнительных свойства:

    Он согласован: для любых не-нулевых экземпляров x и y типа AnyRef, многократные вызовы x.eq(y) последовательно возвращают true или последовательно возвращают false. Для любого не-нулевого экземпляра x типа AnyRef, x.eq(null) и null.eq(x) возвращают false. null.eq(null) возвращает true.

При переопределении методов equals или hashCode важно обеспечить согласованность их поведения с равенством по ссылке. Поэтому, если два объекта являются ссылками друг на друга (o1 eq o2 ), они должны быть равны друг другу (o1 == o2) и они должны иметь одинаковое значение хэша (o1.hashCode == o2.hashCode).

возвращает

true если аргумент является ссылкой на объект-приёмник; false в противном случае.

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

def equals(arg0: Any): Boolean

Метод равенства для ссылочных типов. Реализация по умолчанию делегирует eq.

См. также equals в scala.Any.

возвращает

true если объект-приёмник эквивалентен аргументу; false в противном случае.

Классы определения
AnyRef → Any

def failed: Future[Throwable]

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

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

Этот фьючерс может содержать объект throwable, что означает, что фьючерс завершился ошибкой. Фьючерсы, полученные через комбинаторы, имеют ту же исключительную ситуацию, что и фьючерс, из которого они были получены. Следующие объекты throwable не содержатся в фьючерсе:

    Error - ошибки не содержатся в фьючерсах InterruptedException - не содержатся в фьючерсахвсе scala.util.control.ControlThrowable за исключением NonLocalReturnControl - не содержатся в фьючерсах

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

возвращает

завершающийся ошибкой проекция этого Future.

def fallbackTo[U >: T](that: Future[U]): Future[U]

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

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

Пример:

val f = Future { sys.error("failed") }
val g = Future { 5 }
val h = f fallbackTo g
h foreach println // Eventually prints 5
U

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

that

фьючер, результат которого мы хотим использовать, если этот фьючер завершится с ошибкой.

returns

фьючер с успешным результатом этого или that фьючера, или с ошибкой этого фьючера, если оба завершились с ошибкой

def filter(p: (T) ⇒ Boolean)(implicit executor: ExecutionContext): Future[T]

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

Если текущий фьючер содержит значение, которое удовлетворяет предикату, новый фьючер также будет содержать это значение. В противном случае результирующий фьючер завершится с ошибкой 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

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

returns

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

def finalize(): Unit

Вызывается сборщиком мусора для объекта-получателя, когда на объект больше нет ссылок.

Детали о том, когда и как вызывается метод finalize, а также взаимодействие между finalize и нелокальными возвратами и исключениями зависят от платформы.

Attributes
protected[lang]
Definition Classes
AnyRef
Annotations
@throws( classOf[java.lang.Throwable] )
Note

не определён в SLS как член AnyRef

def flatMap[S](f: (T) ⇒ 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

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

returns

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

def flatten[S](implicit ev: <:<[T, Future[S]]): Future[S]

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

S

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

def foreach[U](f: (T) ⇒ U)(implicit executor: ExecutionContext): Unit

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

ПРЕДУПРЕЖДЕНИЕ: Не будет вызван, если этот фьючер никогда не завершится или завершится с ошибкой.

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

U

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

f

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

def formatted(fmtstr: String): String

Возвращает строку, отформатированную в соответствии с заданной строкой format. Строки формата аналогичны строкам формата String.format (@see java.lang.String.format).

Implicit
Этот член добавляется неявным преобразованием из Future[T] в StringFormat[Future[T]] в методе StringFormat в scala.Predef.
Definition Classes
StringFormat
Annotations
@inline()

final def getClass(): Class[_]

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

returns

объект класса, соответствующий типу получателя во время выполнения.

Definition Classes
AnyRef → Any
Annotations
@native()

def hashCode(): Int

Метод hashCode для ссылочных типов. См. hashCode в scala.Any.

returns

значение хэш-кода для этого объекта.

Definition Classes
AnyRef → Any
Annotations
@native()

final def isInstanceOf[T0]: Boolean

Проверяет, является ли динамический тип объекта-приёмника T0.

Обратите внимание, что результат проверки зависит от правил стирания типов в Scala. Следовательно, выражение 1.isInstanceOf[String] вернёт false, а выражение List(1).isInstanceOf[List[String]] вернёт true. В последнем примере из-за стирания параметра типа во время компиляции невозможно проверить, соответствуют ли элементы списка указанному типу.

returns

true если объект-приёмник является экземпляром стёртого типа T0; false в противном случае.

Definition Classes
Any

def map[S](f: (T) ⇒ S)(implicit executor: ExecutionContext): Future[S]

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

Пример:

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

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

S

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

f

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

returns

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

def mapTo[S](implicit tag: ClassTag[S]): Future[S]

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

S

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

tag

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

returns

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

final def ne(arg0: AnyRef): Boolean

Эквивалентно !(this eq that).

returns

true, если аргумент не является ссылкой на объект-приёмник; false в противном случае.

Definition Classes
AnyRef

final def notify(): Unit

Разбуждает один поток, ожидающий монитора объекта-приёмника.

Definition Classes
AnyRef
Annotations
@native()
Note

не определено в SLS как член AnyRef

final def notifyAll(): Unit

Разбуждает все потоки, ожидающие монитора объекта-приёмника.

Definition Classes
AnyRef
Annotations
@native()
Note

не определено в SLS как член AnyRef

def recover[U >: T](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

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

returns

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

def recoverWith[U >: T](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

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

returns

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

final def synchronized[T0](arg0: ⇒ T0): T0

Definition Classes
AnyRef

def toString(): String

Создаёт строковое представление этого объекта. По умолчанию представление зависит от платформы. На платформе Java оно представляет собой конкатенацию имени класса, символа "@" и хэш-кода объекта в шестнадцатеричном формате.

returns

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

Definition Classes
AnyRef → Any

def transform[S](s: (T) ⇒ S, f: (Throwable) ⇒ Throwable)(implicit executor: ExecutionContext): Future[S]

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

S

тип возвращаемого значения

s

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

f

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

returns

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

final def wait(): Unit

Definition Classes
AnyRef
Annotations
@throws( ... )

final def wait(arg0: Long, arg1: Int): Unit

Definition Classes
AnyRef
Annotations
@throws( ... )

final def wait(arg0: Long): Unit

Definition Classes
AnyRef
Annotations
@throws( ... ) @native()

final def withFilter(p: (T) ⇒ Boolean)(implicit executor: ExecutionContext): Future[T]

def zip[U](that: Future[U]): Future[(T, U)]

Объединяет значения фьючера this и фьючера that, создавая новый фьючер, содержащий кортеж их результатов.

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

U

тип другого фьючера

that

другой фьючер

returns

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

def zipWith[U, R](that: Future[U])(f: (T, U) ⇒ R)(implicit executor: ExecutionContext): Future[R]

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

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

U

тип другого фьючера

R

тип результирующего фьючера

that

другой фьючер

f

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

returns

фьючер с результатом применения f к результатам this и that

def →[B](y: B): (Future[T], B)

Неявный
Этот член добавлен неявным преобразованием из Future[T] в ArrowAssoc[Future[T]], выполненным методом ArrowAssoc в scala.Predef.
Definition Classes
ArrowAssoc

© 2002-2019 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://www.scala-lang.org/api/2.12.9/scala/concurrent/Future.html

Spec-Zone.ru

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