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;
}
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);
}
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);
}
}
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);
}
}
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)