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:

Don’t Let AI Erase The Next Generation Of Dev Leaders

Don’t let AI erase the next generation of dev leaders

As AI tools take over more routine coding work, some companies are cutting early-career dev roles — a short-sighted move that could quietly erode the next generation of tech leaders if we aren’t careful.

Jack Herrington
Aug 19, 2025 â‹… 6 min read
Nuxt 4.0 Is Here: What’s New And What To Expect

Nuxt 4.0 is here: What’s new and what to expect

Learn what’s new in Nuxt 4, from the app/ directory to TypeScript improvements and data fetching changes. Plus, tips for a smooth migration.

Ikeh Akinyemi
Aug 19, 2025 â‹… 4 min read

Using Grok 4 in the frontend development: Here’s what I’ve learned

I put Grok 4 to the test on real frontend projects to see if its “math professor-level” intelligence holds up. Here’s how it performed, what it costs, and when to use it.

Chizaram Ken
Aug 17, 2025 â‹… 5 min read

Effective rendering with Selective SSR in TanStack Start

TanStack Start’s Selective SSR lets you control route rendering with server, client, or data-only modes. Learn how it works with a real app example.

Amazing Enyichi Agu
Aug 14, 2025 â‹… 10 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