The execution of code carries on even after a promise is rejected in an await expression

Execute the code snippet below in Chrome console and observe the printed output. Why does the console log still get displayed even after an error is thrown by the f2() function?

async function f1() {
 const p  = await f2();
 console.log("This line should not get printed since the promise was rejected");
}

async function f2() {
    Promise.reject("promise rejected");
}

f1();

Answer №1

One common issue is arising due to the inadequate handling of Promise rejection from the f2() function. When the

Promise.reject("promise rejected")
is triggered, it generates a rejected Promise that needs to be handled properly.

To address this and similar issues effectively, incorporating try-catch blocks for handling side effects is recommended. Here's how you can modify your code:

async function f1() {
  try {
    const p = await f2();
    console.log("This line should not get printed since the promise was rejected");
  } catch (error) {
    console.error(error); // You have the option to omit logging any information
  }
}

async function f2() {
  return Promise.reject("promise rejected");
}

f1();

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

Navigating through various div elements in Javascript and sending parameters to a script

Context In my project, I am using PHP to generate a series of voting sections. Each section follows the same format except for a unique number assigned to it, which increases with each iteration of the PHP loop. To keep track of the unique numbers, I uti ...

Showing a <div> element sandwiched between two elements from different hierarchies

Consider this snippet of HTML code: <div style="background-color: blue"> <div style="color: red"> some content some content some content some content </div> </div> <div id="highlight" style="top: 0px; width: 20 ...

Utilizing Angular: Importing Scripts in index.html and Implementing Them in Components

Currently, I am attempting to integrate the Spotify SDK into an Angular application. While I have successfully imported the script from the CDN in index.html, I am encountering difficulties in utilizing it at the component level. It seems like there may be ...

sending a POST request with fetch

When it comes to making AJAX requests, I used to rely on jQuery in the past. However, with the rise of React, there is no longer a need to include the entire jQuery library for this purpose. Instead, it is recommended to use JavaScript's built-in fetc ...

Place a div according to the location of the mouse click

Is there a way to create a popup in Angular 4 that appears next to the mouse click coordinates? I want it to work similar to how events are created in Google Calendar. ...

I had hoped to remove just one item, but now the entire database is being erased

I present it in this way <tr v-for="(foodItem, index) in filteredFoodItems"> <td>{{ foodItem.name }}</td> <td>{{ foodItem.price | currency('£') }}</td> <td>{{ foodItem.category }}< ...

Guide on setting up a MEAN stack application to run on port 8080

I am brand new to the mean stack development environment. I'm attempting to configure my root domain name to display the app directory once I enter the command grunt, but the only way it currently works is at website.com:8080/!#/. How can I get it to ...

Transform Promise-based code to use async/await

I'm attempting to rephrase this code using the async \ await syntax: public loadData(id: string): void { this.loadDataAsync() .then((data: any): void => { // Perform actions with data }) .catch((ex): v ...

Implementing image display in autocomplete feature using jQuery

I am currently working on a project using Spring MVC, where I am implementing a jQuery autocomplete plugin to fetch data from a JSON file generated by the server. $('#searchTerm').autocomplete({ serviceUrl: '${ctx}/search/searchAutocomp ...

What is the best way to eliminate a CSS style from a div?

I have implemented jQuery Autosize to automatically adjust the height of textarea elements. It works perfectly when I focus on the textarea element. However, when I blur out of the textarea, I want to reset the height to its default value. I am unsure of ...

When the button is clicked, my goal is to increase the value of the text field by one using JavaScript

I need the functionality for each button to increment the value text field located next to it <input type="number" value="0" min="0" max="5" step="1" id="qty"/> <button onclick="buttonClick()" type="button" class="btn btn-success btn-sm" id="add" ...

JQuery - Enormous Delay in ScrollTop

Currently, I am developing a simple website with JQuery's ScrollTop functionality for the top navigation bar. However, I encountered a specific issue that I can't resolve. When scrolling down past 50 pixels, the navbar shrinks as intended. But t ...

javascript execute process and make a function call

I'm experiencing a problem with JavaScript. When I click a button, it calls a function. function onButtonClickFunction() { ajaxCall(); } function ajaxCall() { $('.black_overlay').show(); /* Some Ajax Code */ $('.blac ...

Using DefaultSeo does not override NextSeo in every component

I am looking to dynamically change the Head tag using next-seo. While browser validation will show NEXTSeo for individual pages, Twitter, Firebase's card validation tool, and others will default to next-seo-config.js. Does anyone have a solution? S ...

Unexpected JavaScript behavior triggers Safari's crash on iOS platforms

In my Sencha Touch application, I am implementing a feature where users can download 5000 records in JSON format and display them in an Ext.List control. The downloading of records works smoothly using JSON.parse() and storing the data locally. However, u ...

Tips for turning off server-side sorting in Datatables

Following up on my previous question here, I am utilizing Datatables with server-side processing. $('#dataTables1').DataTable({ "bProcessing": true, "bPaginate": false, "serverSide": true, "ajax":{ ...

Animating elements within a D3.js force layout

I am looking to create a unique data visualization that resembles floating bubbles with text inside each bubble. Currently, I have a prototype using mock data available here: JSfiddle // Here lies the code snippet // ... However, my current challenge li ...

Quiz on Ice Cream Flavors with Javascript - Testing Your Knowledge!

Looking for some assistance with the quiz below. /* * Challenge: Ice Cream Order (3-6) * * Create a single if statement to output the message: * * "I'd like two scoops of __________ ice cream in a __________ with __________." * * ...only u ...

Using either CSS or JavaScript to prevent text selection highlighting when pressing CTRL + A

Note: Please note that this question is distinct from How to disable text selection highlighting using CSS? Prior to asking, I reviewed the discussion history of the aforementioned question. Everything seems to be working well, except that I want to allow ...

Continuously invoking a function until jQuery's .post method has completed loading

As I am diving into the world of jQuery framework, I encountered a situation where I used the readyState() function while working with AJAX in regular JavaScript to display a loading gif image. However, when transitioning to using jQuery's .post() met ...