Predict the output of the following javascript code
const asyncFunction = async () => {
try {
await Promise.reject("Oops!");
} catch (error) {
return "Caught: " + error;
} finally {
return "Finally block executed";
}
};
asyncFunction().then(result => console.log(result));
Quiz Explanation
In this JavaScript code, an asynchronous function asyncFunction
is defined using the async
keyword. Inside this function:
- It tries to
await
a rejected Promise usingPromise.reject("Oops!")
. - In the
catch
block, it catches the rejection reason (error) and returns a string concatenation of "Caught: " and the error message. - In the
finally
block, it returns a string "Finally block executed".
The behavior of finally
is interesting in this case. Even though the catch
block returns a value, the finally
block still executes and returns a value. This is because finally
always runs, regardless of whether an error occurred or not.
When asyncFunction()
is called, it returns a Promise. Then, the .then()
method is chained to the Promise to handle the resolved value.
So, the output of the given code will be:
Finally block executed
This is because the finally
block is executed and returns its value, overriding any value returned in the catch
block.