DEV Community

Cover image for Difference between return and return await in JavaScript
Claudio Guedes
Claudio Guedes

Posted on

Difference between return and return await in JavaScript

You might be thinking that these two approaches are the same. But there is a crucial difference between return and return await.

When we deal with promises, such as database queries, we commonly use await. For example:

async function getUserById(userId) {
  const user = await userRepository.findById(userId);
  return user;
}
Enter fullscreen mode Exit fullscreen mode

However, in this case, it is not strictly necessary to use await. We can write it like this:

function getUserById(userId) {
  return userRepository.findById(userId);
}
Enter fullscreen mode Exit fullscreen mode

Both options will work normally.

When we have a try/catch block, the behavior is different, and if you're unaware of this, it can cause unexpected errors.

function getUserById(userId) {
  try {
    return userRepository.findById(userId);
  } catch (error) {
    console.error(error.message);
  }
}
Enter fullscreen mode Exit fullscreen mode

If an error occurs in findById, it won't be caught, and this will likely become a problem. This is where we need to use return await.

async function getUserById(userId) {
  try {
    return await userRepository.findById(userId);
  } catch (error) {
    console.error(error.message);
  }
}
Enter fullscreen mode Exit fullscreen mode

Now, we are safe, and any error will fall into the catch block.

In summary, if we need to handle and process errors in a catch block, we must use return await to ensure the application operates correctly.

Top comments (0)