Asynchronous Programming involves writing applications that are designed to perform more than one task at a time.
This is vital no matter your target platform. Be it desktop,web or mobile environment.
Asynchronous programming allows us create more capable and scalable applications. This is because it allows us use parallelism to attain better performance.
The opposite of asynchronous programming is synchronous programming.
Majority of programs out there are synchrounous. This implies they get executed in a deterministic manner.
With synchronous programming, you start, maybe loop, or branch, pause, resume, but generally with the same inputs they get executed one after the other. They work in a straightforward manner.
The advantage of synchronous programming over asynchronous programming comes with ease of programming.
However, asynchronous programming creates programs that are faster and more responsive than synchronous programs. This then means that they can do more work per given time.
Asynchronous Programming has become very important in recent users. This is because users are demanding more and more responsiveness while more and more CPU cores are also being packed in devices.
The popularity of smartphones and tablets has greatly contributed to this need. People generally use these devices like person assistants and therefore expect fluidity and smoothness.
We are also at a stage where processor technology has quickly evolved such that even cheap devices have multiple cores. This provides enormous processing power that needs to be taken advantage of.
You want a responsive User Interface(UI) while doing IO intensive tasks.Doing these types of tasks on the UI thread leads to poor responsiveness leading to user frustrations.
You want to take complete advantage of the available processing power in the host hardware. Alot of devices nowadays have multiprocessor architectures such as multiple cores.