What are the different ways to handle asynchronous operations in JavaScript?

Technical