Packages

trait Futures extends AnyRef

This trait is used to provide non-blocking timeouts and delays on an operation that returns a Future.

You can dependency inject the Futures as follows to create a Future that will timeout after a certain period of time:

class MyService @Inject()(futures: Futures, piCalculator: PiCalculator) extends Timeout {
  def calculateWithTimeout(timeoutDuration: FiniteDuration): Future[Int] = {
    futures.timeout(timeoutDuration)(piCalculator.rawCalculation())
  }
}

And you can also use a delay to return data after a given period of time.

class PiCalculator @Inject()(futures: Futures) {
  def rawCalculation(): Future[Int] = {
    futures.delay(300 millis) { Future.successful(42) }
  }
}

You should check for timeout by using scala.concurrent.Future.recover or scala.concurrent.Future.recoverWith and checking for scala.concurrent.TimeoutException:

val future = myService.calculateWithTimeout(100 millis).recover {
  case _: TimeoutException =>
    -1
}
Source
Futures.scala
See also

Futures and Promises

Linear Supertypes
AnyRef, Any
Known Subclasses
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Futures
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Abstract Value Members

  1. abstract def delay(duration: FiniteDuration): Future[Done]

    Creates a delayed future that is used as a supplier to other futures.

    Creates a delayed future that is used as a supplier to other futures.

    val future: Future[String] = futures.delay(1 second).map(_ => "hello world!")
    returns

    a future completed successfully after a delay of duration.

  2. abstract def delayed[A](duration: FiniteDuration)(f: => Future[A]): Future[A]

    Creates a future which will be completed after the specified duration.

    Creates a future which will be completed after the specified duration.

    A

    the result type used in the Future.

    duration

    the duration to delay the future by.

    f

    the future to delay

  3. abstract def timeout[A](timeoutDuration: FiniteDuration)(f: => Future[A]): Future[A]

    Creates a future which will resolve to a timeout exception if the given Future has not successfully completed within timeoutDuration.

    Creates a future which will resolve to a timeout exception if the given Future has not successfully completed within timeoutDuration.

    Note that timeout is not the same as cancellation. Even in case of timeout, the given future will still complete, even though that completed value is not returned.

    A

    the result type used in the Future.

    timeoutDuration

    the duration after which a Future.failed(TimeoutException) should be thrown.

    f

    a call by value Future[A]

    returns

    the future that completes first, either the failed future, or the operation.

Concrete Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##: Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  5. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @native()
  6. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  7. def equals(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef → Any
  8. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable])
  9. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  10. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  11. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  12. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  13. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  14. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  15. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  16. def toString(): String
    Definition Classes
    AnyRef → Any
  17. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  18. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  19. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException]) @native()

Inherited from AnyRef

Inherited from Any

Ungrouped