@techie01 Imagine you are making stir-fried vegetables and suddenly in the middle of stirring you realize you didn’t chop onions ahead of time. You can’t stir the vegetables and chop onions at the same time since the vegetables are at risk of burning if you leave it and start chopping onions. You need to keep stirring. So, you ask your brother to chop the onions for you while you are stirring. You suddenly realize you should also put some chopped tomatoes. Since you are too busy stirring and your brother is busy chopping onions, this time you ask your sister to chop the tomatoes for you. Your brother finishes chopping the onions and brings it back to you (callback). You place the onions and continue stirring. Then a minute later your sister brings you the chopped tomatoes (another callback). You place that in the pan and continue stirring.
Asynchronous programming is basically running background tasks while the main task is continuing. Your main task is cooking (stirring) and the background task of your siblings chopping veggies (asynchronously) is similar to what happens in asychronous operations in programming.