In the context of executing a task, a synchronous execution indicates that the program waits for the result of the first task before moving on to another task. In contrast, an asynchronous execution does not wait for the result of the first task and it starts executing another task immediately after the first task has begun. Both Futures & Promises, and Monix are Scala libraries that allow users to efficiently perform asynchronous operations.
This talk introduces the Futures & Promises library in Scala.concurrent and Monix. We will walk through several examples that demonstrate how to use Futures & Promises, and Monix. In addition, the talk compares and contrasts the similarities and differences between the two libraries. Furthermore, we will discuss some best practices in debugging asynchronous systems.
Resources on Pg. 41:
Iulian Dragos - Async Debugger in Scala IDE:
http://iulidragos.com/assets/papers/stack-retention.pdf
http://scala-ide.org/docs/current-user-doc/features/async-debugger/index.html
https://github.com/jamie-allen/async_debugger_demo
https://www.youtube.com/watch?v=P32Drw0CX08
IntelliJ Capture (2017):
https://blog.jetbrains.com/idea/2017/02/intellij-idea-2017-1-eap-extends-debugger-with-async-stacktraces/
https://blog.jetbrains.com/idea/2017/02/intellij-idea-2017-1-eap-extends-debugger-with-async-stacktraces/#comment-403133
https://www.jetbrains.com/help/idea/async-stacktraces.html