How do you handle asynchronous operations in JavaScript, and what are the benefits of using async/await?