DEV Community

Paramanantham Harrison
Paramanantham Harrison

Posted on • Originally published at learnwithparam.com on

Async functions always return a promise - Lets deep into the Async world

I have my new FREE workshop on API design for beginners using Node Js and MongoDB. It is my first workshop, let's learn together. You can register for the workshop here

Async functions are a way to make the asynchronous operation synchronously by waiting for the response. Let's see it in the example straight away,

// Normal async function - Returning promise
const getCats = async () => {
  return new Promise((resolve, reject) =>
    setTimeout(
      () =>
        resolve([
          {
            name: 'tiger',
          },
          {
            name: 'jimmy',
          },
        ]),
      2000
    )
  );
};

// Self envoking async function
(async () => {
  console.log(getCats()); // Promise { <pending> }
  const cats = await getCats();
  console.log(cats); // [{ name: 'tiger' }, { name: 'jimmy' }]
})();
Enter fullscreen mode Exit fullscreen mode

As you can see, we are returning a promise in our example.

Now lets see the next example by returning direct JSON array,

// async function - Returning JSON
const getCatsJson = async () => {
  return [
    {
      name: 'tiger',
    },
    {
      name: 'jimmy',
    },
  ];
};

// Self envoking async function
(async () => {
  console.log(getCatsJson()); // Promise { [{ name: 'tiger' }, { name: 'jimmy' }] }
  const catsJson = await getCatsJson();
  console.log(catsJson); // [{ name: 'tiger' }, { name: 'jimmy' }]
})();
Enter fullscreen mode Exit fullscreen mode

As you can check the console log, even though we returned a JSON object from the async function. It was wrapped as a promise. So we still need to await and resolve the promise.

You can always resolve the async without await using promise way,

getCatsJson().then(console.log); // [{ name: 'tiger' }, { name: 'jimmy' }]
Enter fullscreen mode Exit fullscreen mode

You can check the examples here,

Hope, this helps you to understand how async returns the value by wrapping it as a Promise 😋

Follow me on twitter. I share my reading list and short tips on twitter

Top comments (0)