# Asynchronous JavaScript Asynchronous programming is a technique that enables your program to start a potentially long-running task and still be able to be responsive to other events while that task runs, rather than having to wait until that task has finished. Once that task has finished, your program is presented with the result. Many functions provided by browsers, especially the most interesting ones, can potentially take a long time, and therefore, are asynchronous. For example: - Making HTTP requests using `fetch()` - Accessing a user's camera or microphone using `getUserMedia()` - Asking a user to select files using `showOpenFilePicker()` So even though you may not have to implement your own asynchronous functions very often, you are very likely to need to use them correctly. Visit the following resources to learn more: - [@article@Asynchronous JavaScript - MDN](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Asynchronous/Introducing) - [@video@What The Hack is Event Loop and Asynchronous JavaScript - JSConf](https://youtu.be/8aGhZQkoFbQ) - [@video@Asynchronous JavaScript - JavaScript Visualized](https://youtu.be/eiC58R16hb8) - [@feed@Explore top posts about JavaScript](https://app.daily.dev/tags/javascript?ref=roadmapsh)