JavaScript Async functions (async/await)


async and await build on top of promises and generators to express asynchronous actions inline. This makes asynchronous or callback code much easier to maintain.

Functions with the async keyword return a Promise, and can be called with that syntax.

Inside an async function the await keyword can be applied to any Promise, and will cause all of the function body after the await to be executed after the promise resolves.


  • async function foo() {
       await asyncCall()
  • async function() { ... }
  • async() => { ... }
  • (async () => {
       const data = await asyncCall()
       console.log(data) })()


Async functions are a syntactic sugar over promises and generators. They help you make your code more readable, maintainable, easier to catch errors in, and with fewer levels of indentation.