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:

how to use the ternary operator in javascript

How to use the ternary operator in JavaScript

Add to your JavaScript knowledge of shortcuts by mastering the ternary operator, so you can write cleaner code that your fellow developers will love.

Chizaram Ken
Feb 21, 2025 â‹… 7 min read
Using tsup To Bundle Your TypeScript Package

Using tsup to bundle your TypeScript package

Learn how to efficiently bundle your TypeScript package with tsup. This guide covers setup, custom output extensions, and best practices for optimized, production-ready builds.

Muhammad Ali
Feb 20, 2025 â‹… 7 min read
how to use react higher order components

How to use React higher-order components

Learn the fundamentals of React’s high-order components and play with some code samples to help you understand how it works.

Hussain Arif
Feb 20, 2025 â‹… 10 min read
dependency inversion principle

Understanding the dependency inversion principle (DIP)

Learn about the dependency inversion principle (DIP), its importance, and how to implement it across multiple programming languages.

Samuel Olusola
Feb 20, 2025 â‹… 8 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