As we know, the Scala Future API is used to write asynchronous programs. It has three main components—Future, Promise, and ExecutionContext.
Let's discuss the relationship and differences between these components. The following diagram shows how the Scala Future API components work together:
As shown in the preceding diagram, Future[T] contains a computation task of type T. Promise[T] executes that computation task T in ExecutionContext and writes the results back into the Future[T].