2021-11-08
2621
#vanilla javascript
Fernando Doglio
4429
Nov 8, 2021 â‹… 9 min read

JavaScript Promises: race, all, allSettled, and then

Fernando Doglio Technical Manager at Globant. Author of books and maker of software things. Find me online at fdoglio.com.

Recent posts:

master state management hydration Nuxt usestate

Nuxt state management and hydration with useState

useState can effectively replace ref in many scenarios and prevent Nuxt hydration mismatches that can lead to unexpected behavior and errors.

Yan Sun
Jan 20, 2025 â‹… 8 min read
React Native List Components: FlashList, FlatList, And More

React Native list components: FlashList, FlatList, and more

Explore the evolution of list components in React Native, from `ScrollView`, `FlatList`, `SectionList`, to the recent `FlashList`.

Chimezie Innocent
Jan 16, 2025 â‹… 4 min read
Building An AI Agent For Your Frontend Project

Building an AI agent for your frontend project

Explore the benefits of building your own AI agent from scratch using Langbase, BaseUI, and Open AI, in a demo Next.js project.

Ivaylo Gerchev
Jan 15, 2025 â‹… 12 min read
building UI sixty seconds shadcn framer ai

Building a UI in 60 seconds with Shadcn and Framer AI

Demand for faster UI development is skyrocketing. Explore how to use Shadcn and Framer AI to quickly create UI components.

Peter Aideloje
Jan 14, 2025 â‹… 6 min read
View all posts

3 Replies to "JavaScript Promises: race, all, allSettled, and then"

  1. Mozilla’s web documentation at https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all has an good workaround for the problem of rejection stopping Promise.all(). I have been using it without any issues so far:

    var p1 = new Promise((resolve, reject) => {
    setTimeout(() => resolve(‘p1_delayed_resolution’), 1000);
    });

    var p2 = new Promise((resolve, reject) => {
    reject(new Error(‘p2_immediate_rejection’));
    });

    Promise.all([
    p1.catch(error => { return error }),
    p2.catch(error => { return error }),
    ]).then(values => {
    console.log(values[0]) // “p1_delayed_resolution”
    console.log(values[1]) // “Error: p2_immediate_rejection”
    })

  2. Nice article, but one thing should be noted. You say:

    “By definition,Promise.all will run all your promises until one of the following conditions are met:”

    It’s not true. Promise.all doesn’t run anything. Promises are ALWAYS fired immediately, always. There are no methods to explicitly control Promise’s execution. Promise.all just listens their execution, but doesn’t do anything else.

Leave a Reply