Future (original) (raw)
Callbacks
Applies the side-effecting function to the result of this future, and returns a new future with the result of this future.
Applies the side-effecting function to the result of this future, and returns a new future with the result of this future.
This method allows one to enforce that the callbacks are executed in a specified order.
Note that if one of the chained andThen
callbacks throws an exception, that exception is not propagated to the subsequent andThen
callbacks. Instead, the subsequent andThen
callbacks are given the original value of this future.
The following example prints out 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)
}
Since this method executes asynchronously and does not produce a return value, any non-fatal exceptions thrown will be reported to the ExecutionContext
.
Type parameters
U
only used to accept any return type of the given PartialFunction
Value parameters
pf
a PartialFunction
which will be conditionally applied to the outcome of this Future
Attributes
Returns
a Future
which will be completed with the exact same outcome as this Future
but after the PartialFunction
has been executed.
Source
Asynchronously processes the value in the future once the value becomes available.
Asynchronously processes the value in the future once the value becomes available.
WARNING: Will not be called if this future is never completed or if it is completed with a failure.
Since this method executes asynchronously and does not produce a return value, any non-fatal exceptions thrown will be reported to the ExecutionContext
.
Type parameters
U
only used to accept any return type of the given callback function
Value parameters
f
the function which will be executed if this Future
completes with a result, the return value of f
will be discarded.
Attributes
Source
When this future is completed, either through an exception, or a value, apply the provided function.
When this future is completed, either through an exception, or a value, apply the provided function.
If the future has already been completed, this will either be applied immediately or be scheduled asynchronously.
Note that the returned value of f
will be discarded.
Since this method executes asynchronously and does not produce a return value, any non-fatal exceptions thrown will be reported to the ExecutionContext
.
Multiple callbacks may be registered; there is no guarantee that they will be executed in a particular order.
The provided callback always runs in the provided implicit ExecutionContext
, though there is no guarantee that the execute()
method on the ExecutionContext
will be called once per callback or that execute()
will be called in the current thread. That is, the implementation may run multiple callbacks in a batch within a single execute()
and it may run execute()
either immediately or asynchronously. Completion of the Future must *happen-before* the invocation of the callback.
Type parameters
U
only used to accept any return type of the given callback function
Value parameters
f
the function to be executed when this Future
completes
Attributes
Source
Polling
Returns whether the future had already been completed with a value or an exception.
Returns whether the future had already been completed with a value or an exception.
Note: using this method yields nondeterministic dataflow programs.
Attributes
Returns
true
if the future was completed, false
otherwise
Source
The current value of this Future
.
The current value of this Future
.
Note: using this method yields nondeterministic dataflow programs.
If the future was not completed the returned value will be None
. If the future was completed the value will be Some(Success(t))
if it contained a valid result, or Some(Failure(error))
if it contained an exception.
Attributes
Returns
None
if the Future
wasn't completed, Some
if it was.
Source
Transformations
Creates a new future by mapping the value of the current future, if the given partial function is defined at that value.
Creates a new future by mapping the value of the current future, if the given partial function is defined at that value.
If the current future contains a value for which the partial function is defined, the new future will also hold that value. Otherwise, the resulting future will fail with a NoSuchElementException
.
If the current future fails, then the resulting future also fails.
Example:
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
Type parameters
S
the type of the returned Future
Value parameters
pf
the PartialFunction
to apply to the successful result of this Future
Attributes
Returns
a Future
holding the result of application of the PartialFunction
or a NoSuchElementException
Source
The returned Future
will be successfully completed with the Throwable
of the original Future
if the original Future
fails.
The returned Future
will be successfully completed with the Throwable
of the original Future
if the original Future
fails.
If the original Future
is successful, the returned Future
is failed with a NoSuchElementException
.
This future may contain a throwable object and this means that the future failed. Futures obtained through combinators have the same exception as the future they were obtained from. The following throwable objects are not contained in the future: - Error
- fatal errors are not contained within futures - InterruptedException
- not contained within futures - all scala.util.control.ControlThrowable
except NonLocalReturnControl
- not contained within futures
Instead, the future is completed with an ExecutionException that has one of the exceptions above as its cause. If a future is failed with a scala.runtime.NonLocalReturnControl
, it is completed with a value from that throwable instead.
Attributes
Returns
a failed projection of this Future
.
Source
Creates a new future which holds the result of this future if it was completed successfully, or, if not, the result of the that
future if that
is completed successfully.
Creates a new future which holds the result of this future if it was completed successfully, or, if not, the result of the that
future if that
is completed successfully. If both futures are failed, the resulting future holds the throwable object of the first future.
Using this method will not cause concurrent programs to become nondeterministic.
Example:
val f = Future { throw new RuntimeException("failed") }
val g = Future { 5 }
val h = f fallbackTo g
h foreach println // Eventually prints 5
Type parameters
U
the type of the other Future
and the resulting Future
Value parameters
that
the Future
whose result we want to use if this Future
fails.
Attributes
Returns
a Future
with the successful result of this or that Future
or the failure of this Future
if both fail
Source
Creates a new future by filtering the value of the current future with a predicate.
Creates a new future by filtering the value of the current future with a predicate.
If the current future contains a value which satisfies the predicate, the new future will also hold that value. Otherwise, the resulting future will fail with a NoSuchElementException
.
If the current future fails, then the resulting future also fails.
Example:
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
Value parameters
p
the predicate to apply to the successful result of this Future
Attributes
Returns
a Future
which will hold the successful result of this Future
if it matches the predicate or a NoSuchElementException
Source
Creates a new future by applying a function to the successful result of this future, and returns the result of the function as the new future.
Creates a new future by applying a function to the successful result of this future, and returns the result of the function as the new future. If this future is completed with an exception then the new future will also contain this exception.
Example:
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
is translated to:
f flatMap { (x: Int) => g map { (y: Int) => x + y } }
Type parameters
S
the type of the returned Future
Value parameters
f
the function which will be applied to the successful result of this Future
Attributes
Returns
a Future
which will be completed with the result of the application of the function
Source
Creates a new future with one level of nesting flattened, this method is equivalent to flatMap(identity)
.
Creates a new future with one level of nesting flattened, this method is equivalent to flatMap(identity)
.
Type parameters
S
the type of the returned Future
Attributes
Source
Creates a new future by applying a function to the successful result of this future.
Creates a new future by applying a function to the successful result of this future. If this future is completed with an exception then the new future will also contain this exception.
Example:
val f = Future { "The future" }
val g = f map { x: String => x + " is now!" }
Note that a for comprehension involving a Future
may expand to include a call to map
and or flatMap
and withFilter
. See scala.concurrent.Future#flatMap for an example of such a comprehension.
Type parameters
S
the type of the returned Future
Value parameters
f
the function which will be applied to the successful result of this Future
Attributes
Returns
a Future
which will be completed with the result of the application of the function
Source
Creates a new Future[S]
which is completed with this Future
's result if that conforms to S
's erased type or a ClassCastException
otherwise.
Creates a new Future[S]
which is completed with this Future
's result if that conforms to S
's erased type or a ClassCastException
otherwise.
Type parameters
S
the type of the returned Future
Value parameters
tag
the ClassTag
which will be used to cast the result of this Future
Attributes
Returns
a Future
holding the casted result of this Future
or a ClassCastException
otherwise
Source
Creates a new future that will handle any matching throwable that this future might contain.
Creates a new future that will handle any matching throwable that this future might contain. If there is no match, or if this future contains a valid result then the new future will contain the same.
Example:
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
Type parameters
U
the type of the returned Future
Value parameters
pf
the PartialFunction
to apply if this Future
fails
Attributes
Returns
a Future
with the successful value of this Future
or the result of the PartialFunction
Source
Creates a new future that will handle any matching throwable that this future might contain by assigning it a value of another future.
Creates a new future that will handle any matching throwable that this future might contain by assigning it a value of another future.
If there is no match, or if this future contains a valid result then the new future will contain the same result.
Example:
val f = Future { Int.MaxValue }
Future (6 / 0) recoverWith { case e: ArithmeticException => f } // result: Int.MaxValue
Type parameters
U
the type of the returned Future
Value parameters
pf
the PartialFunction
to apply if this Future
fails
Attributes
Returns
a Future
with the successful value of this Future
or the outcome of the Future
returned by the PartialFunction
Source
Creates a new future by applying the 's' function to the successful result of this future, or the 'f' function to the failed result.
Creates a new future by applying the 's' function to the successful result of this future, or the 'f' function to the failed result. If there is any non-fatal exception thrown when 's' or 'f' is applied, that exception will be propagated to the resulting future.
Type parameters
S
the type of the returned Future
Value parameters
f
function that transforms a failure of the receiver into a failure of the returned future
s
function that transforms a successful result of the receiver into a successful result of the returned future
Attributes
Returns
a Future
that will be completed with the transformed value
Source
Creates a new Future by applying the specified function to the result of this Future.
Creates a new Future by applying the specified function to the result of this Future. If there is any non-fatal exception thrown when 'f' is applied then that exception will be propagated to the resulting future.
Type parameters
S
the type of the returned Future
Value parameters
f
function that transforms the result of this future
Attributes
Returns
a Future
that will be completed with the transformed value
Source
Creates a new Future by applying the specified function, which produces a Future, to the result of this Future.
Creates a new Future by applying the specified function, which produces a Future, to the result of this Future. If there is any non-fatal exception thrown when 'f' is applied then that exception will be propagated to the resulting future.
Type parameters
S
the type of the returned Future
Value parameters
f
function that transforms the result of this future
Attributes
Returns
a Future
that will be completed with the transformed value
Source
Used by for-comprehensions.
Zips the values of this
and that
future, and creates a new future holding the tuple of their results.
Zips the values of this
and that
future, and creates a new future holding the tuple of their results.
If either input future fails, the resulting future is failed with the same throwable, without waiting for the other input future to complete.
If the application of f
throws a non-fatal throwable, the resulting future is failed with that throwable.
Type parameters
U
the type of the other Future
Value parameters
that
the other Future
Attributes
Returns
a Future
with the results of both futures or the failure of the first of them that failed
Source
Zips the values of this
and that
future using a function f
, and creates a new future holding the result.
Zips the values of this
and that
future using a function f
, and creates a new future holding the result.
If either input future fails, the resulting future is failed with the same throwable, without waiting for the other input future to complete.
If the application of f
throws a non-fatal throwable, the resulting future is failed with that throwable.
Type parameters
R
the type of the resulting Future
U
the type of the other Future
Value parameters
f
the function to apply to the results of this
and that
that
the other Future
Attributes
Returns
a Future
with the result of the application of f
to the results of this
and that
Source
Await the "completed" state of this Awaitable
.
Await the "completed" state of this Awaitable
.
This method should not be called directly; use Await.ready instead.
Value parameters
atMost
maximum wait time, which may be negative (no waiting is done), Duration.Inf for unbounded waiting, or a finite positive duration
Attributes
Returns
this Awaitable
Throws
TimeoutException if after waiting for the specified time this Awaitable
is still not ready
Inherited from:
Source
Await and return the result (of type T
) of this Awaitable
.
Await and return the result (of type T
) of this Awaitable
.
This method should not be called directly; use Await.result instead.
Value parameters
atMost
maximum wait time, which may be negative (no waiting is done), Duration.Inf for unbounded waiting, or a finite positive duration
Attributes
Returns
the result value if the Awaitable
is completed within the specific maximum wait time
Throws
TimeoutException if after waiting for the specified time this Awaitable
is still not ready
Inherited from:
Source