Is it possible for the promise body to finish executing before the subsequent line

My brain is not quite functioning at full capacity this early in the morning, but let's say I have something like the following:

const promise = someAsyncFunctionReturningAPromise().then(() => {
    cache.delete(promiseKey, promise); // LINE A
});
cache.set(promiseKey, promise); // LINE B

I'm wondering if line A will execute before line B or if I can count on line B running first. It's worth noting that cache.set is a synchronous method.

Answer №1

According to the standard, the callback function passed to then is guaranteed to be executed asynchronously. This information comes from the documentation on Mozilla's website

The handler function (onFulfilled or onRejected) will be called asynchronously (once the stack is empty).

This information can also be found in the Promise specification

OnFulfilled or onRejected should not be triggered until the execution context stack only contains platform code

That means engine, environment, and promise implementation code. This requirement ensures that onFulfilled and onRejected run asynchronously, after the event loop turn when then is invoked, and with a new stack.

Since the callback is always asynchronous, even if the promise has already been resolved, the set function should be executed before the delete function inside the callback.

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

What is the best way to utilize JavaScript to determine if a particular word is present in a SharePoint text field, especially when the content of the text box is modified or updated

My SharePoint textfield is displaying strangely, with code that looks like this: <div class="ms-taxonomy-fieldeditor ms-taxonomy-fieldeditor-standard ms-taxonomy-writing" title="Category" style="width: 364px;"> <div id="ctl00_PlaceHolderMain_Ed ...

Error encountered when serving tiles using Node JS and Leaflet from the same domain

I have been utilizing the script found at: to run my web application that overlays tile layers from: However, for the past two days, I have been experiencing an issue where tiles are being called in places where they were not previously, causing slow til ...

Utilize flexbox to create a list that is displayed in a column-reverse layout

I am facing a challenge in displaying the latest chat person in the 1st position (active) using Firebase. Unfortunately, Firebase does not have a date field which makes it difficult to achieve this. I have attempted converting the date into milliseconds an ...

Error encountered when trying to convert a React Higher Order Component (HOC) to TypeScript: "Exported variable referencing private name"

Seeking assistance from TypeScript experts as I encounter an issue while attempting to convert a React Higher Order Component (HOC) into TS. I'm unsure of how to resolve this. "src/withEnv.tsx(15,14): error TS4025: Exported variable 'withE ...

The Jqueryui image link is not displaying the image despite no error being reported

Can anyone help me figure out what I'm missing? I'm currently working with ASP.NET MVC 5 and have downloaded the JqueryUI combined via Nuget package. Despite no error references for css/js files, the close button is still not showing in the ima ...

What is the best way to send a query in a jQuery AJAX call?

I am a beginner in working with AJAX requests and server programming. This project is part of my school assignment. I need to include the SID that was generated as a parameter for this request. Additionally, I am trying to pass in an object of colors, a st ...

Storing the many-to-many field when creating an object in Django DRF

Excuse me if this may seem like a straightforward question. I have looked for various solutions, but none of them seem to address my specific issue. I am dealing with a model that has a many-to-many field relationship. Whenever I create a new object throu ...

What is the method for retrieving embedded JavaScript content?

In an attempt to scrape a website using Cheerio, I am facing the challenge of accessing dynamic content that is not present in the HTML but within a JS object (even after trying options like window and document). Here's my code snippet: let axios = ...

What is the best way to select a random set of n elements from an array using angularjs

My array contains a list of elements. app.controller("MainController", function($scope){ $scope.names= [ { value: "q1" }, { value: "q2" }, { value: "q3" } ]; }); ...

I am currently exploring next.js and working on creating a dedicated single post page within my project

I am currently working with Next.js and fetching some dummy data on the homepage. However, I am facing an issue when trying to create a separate page for each post obtained from the homepage. Although I have already coded it, I feel like there is room fo ...

Executing Basic Authentication in Javascript through window.open()

After a user logs into my app, they have the option to download a CSV file from the server by clicking on a button. The URL for the download is secured with basic authentication. When attempting to open the URL using the code below: window.open('http ...

Set up your Typescript project to transpile code from ES6 to ES5 by utilizing Bable

Embarking on a new project, I am eager to implement the Async and Await capabilities recently introduced for TypeScript. Unfortunately, these features are currently only compatible with ES6. Is there a way to configure Visual Studio (2015 Update 1) to co ...

Attempting to transform a numerical value into CSS syntax

Currently, I am attempting to loop through several DIV elements, extract a numerical value from each DIV, and then based on that value matching a specific value in the JavaScript code, assign a particular CSS Class back to the original DIV. This is the sn ...

Uh oh, ERROR @wdio/runner: Looks like we hit a snag. The session could not be created because this version of ChromeDriver is only compatible with Chrome version

While trying to run a script in WebdriverIO V6 with the Cucumber framework using a local Chrome browser version 85.0.4183.83, I encountered an error stating 'ERROR @wdio/runner: Error: Failed to create session. session not created: This version of Chr ...

What is the best way to reorganize Discord channels based on numerical order when interacting with the application?

Whenever someone submits an application for the server, a designated channel is created at the top of the server (view example here). However, responding to these applications in a consistent order has proven challenging due to various factors. Once I resp ...

When using AngularJS services to pass data, the data may be lost when the page is refreshed

I'm facing an issue with transferring data from controller A to controller B using a Factory (or a Service) when the user refreshes the browser. I am able to successfully set the data in controller A and retrieve it in controller B, but upon refreshin ...

What are some effective strategies for reducing excessive re-rendering of React components?

Here is how I am displaying a list of components on the screen: const MessagesContainer = ({ messages, categories, addHandler }) => { const options = categories.map(category => ( { value: category.name, label: category.name } )); ...

The functionality of Bootstrap's Modal feature seems to be malfunctioning

I'm attempting to test the sample modals for my project, but even the codes from jfiddles are not working for me. When I click the button, it only gives me a dimmed window. I have also tried searching on Google for a solution, but to no avail. Below ...

"Encountering a problem with jQuery AJAX - receiving an error message despite the status code being

Attempting to make a jQuery Ajax request using the following code: $.ajax({ url: '<MY_URL>', type: 'POST', contentType: 'application/json;charset=UTF-8', data: JSON.stringify(data), dataType: 'a ...

Tips on sorting ID strings that include a specific substring

I have a user input that may include a street, postal code, city, or a combination of them. How can I filter an array of objects to find those that contain any of these strings in the corresponding fields? getFilteredCentersSuggestions(searchTerm: string) ...