1) You are attached to a single-threaded environment , for example, silverlight. Here you have no choice but to use asynchronous calls, or the entire user stream will be blocked.
2) You have many challenges that take a long time. Why block the entire thread when it can continue to work and do other things, waiting for a return? For example, if I have five function calls, each of which takes 5 seconds, I would like to immediately start all of them and return them if necessary.
3) Too much data to process the output synchronously. If I have a program that writes 10 gigabytes of data to the console, and I want to read the result, I have an asynchronous asynchronous process that will execute line by line. If I do this synchronously, then I will run out of free space and close the program.
source share