trait Thereafter[F[_]] extends AnyRef

Typeclass for computations with an operation that can run a side effect after the computation has finished.

The typeclass abstracts the following patterns so that it can be used for types other than scala.concurrent.Future.

future.transform { result => val () = body(result); result } // synchronous body
future.transform { result => body(result).transform(_ => result) } // asynchronous body

Usage:

import com.digitalasset.canton.util.Thereafter.syntax.*

myAsyncComputation.thereafter(result => ...)

F

The computation's type functor.

Linear Supertypes
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Thereafter
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Type Members

  1. abstract type Content[_]

    The container type for computation result.

Abstract Value Members

  1. abstract def thereafter[A](f: F[A])(body: (Content[A]) => Unit)(implicit ec: ExecutionContext): F[A]

    Runs body after the computation f has completed.

    Runs body after the computation f has completed.

    returns

    The computation that results from chaining f before body. Completes only after body has run. If body completes normally, the result of the computation is the same as f's result. If body throws, the result includes the thrown exception.

  2. abstract def thereafterF[A](f: F[A])(body: (Content[A]) => Future[Unit])(implicit ec: ExecutionContext): F[A]

    runs body after the computation f has completed

    runs body after the computation f has completed

    returns

    The computation that results from chaining f before body. Completes only after body has run. If body completes normally, the result of the computation is the same as f's result. If body throws, the result includes the thrown exception. If body produces a failed computation, the result includes the thrown exception.

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() @IntrinsicCandidate()
  6. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  7. def equals(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef → Any
  8. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @IntrinsicCandidate()
  9. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @IntrinsicCandidate()
  10. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  11. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  12. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @IntrinsicCandidate()
  13. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @IntrinsicCandidate()
  14. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  15. def toString(): String
    Definition Classes
    AnyRef → Any
  16. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  17. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException]) @native()
  18. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])

Deprecated Value Members

  1. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable]) @Deprecated @Deprecated
    Deprecated

Inherited from AnyRef

Inherited from Any

Ungrouped