Asynchronous (async) programming has become commonplace in the world of software development in the last few years. If you want to do any form of web development or distributed programming, you need to understand what it is and how to take advantage of it (luckily, F# has you covered here and has excellent support).
Bear in mind, though: asynchronous programming can be a very complicated subject. It’s not just the programming model but the idea of reasoning about multiple things working in parallel, or the idea of long-running background processes, or the fact that the topic of distributed programming often gets interwoven with background async workloads. It can be really difficult. I won’t try to unravel all its mysteries in this chapter; entire books are dedicated to it. Instead, I want to focus on practical usability in F# and some patterns to get you started.
Despite what I’ve just said, this section will give you a basic overview of what asynchronous means and help you identify when it is useful (or necessary!). Feel free to skip this next section if you’re already confident with the idea of asynchronous programming, such as working with async/await or promises.