Référence rapide

Aide-mémoire Promesses JavaScript (Promises)

Un guide de reference rapide pour les Promesses en JavaScript : constructeur, chainage, gestion des erreurs, combinateurs et async/await.

· Publié le

Une Promise represente l'achevement futur (ou l'echec) d'une operation asynchrone ainsi que la valeur resultante de celle-ci.

États d'une Promesse

Une promesse est toujours dans l'un des trois etats exclusifs suivants :

  1. pending (en attente) : Etat initial, ni resolue ni rejetee.
  2. fulfilled (tenue) : Operation terminee avec succes (resolve(valeur)).
  3. rejected (rompue) : Operation ayant echoue (reject(erreur)).

Constructeur et Chaînage de Base

const loadUser = (id) => {
  return new Promise((resolve, reject) => {
    fetch(`/api/users/${id}`)
      .then((res) => {
        if (!res.ok) throw new Error(`HTTP ${res.status}`);
        return res.json();
      })
      .then((data) => resolve(data))
      .catch((err) => reject(err));
  });
};

loadUser(42)
  .then((user) => console.log('Charge avec succes :', user.name))
  .catch((err) => console.error('Error:', err.message))
  .finally(() => console.log('Requete terminee'));

Méthodes Statiques de Résolution

// Promesse immediatement tenue
const p1 = Promise.resolve('Immediate value');

// Promesse immediatement rejetee
const p2 = Promise.reject(new Error('Immediate failure'));

Combinateurs de Promesses

Méthode Comportement Échoue Quand
Promise.all([p1, p2]) Attend que toutes soient tenues avec succes N'importe quelle promesse est rejetee (arret immediat)
Promise.allSettled([p1, p2]) Attend l'aboutissement de toutes sans jamais rejeter N'echoue jamais
Promise.race([p1, p2]) Prend l'etat de la premiere promesse reglee La premiere promesse reglee est rejetee
Promise.any([p1, p2]) Resolue des la premiere promesse tenue avec succes Toutes les promesses sont rejetees (AggregateError)
// Promise.all : Attendre plusieurs requetes independantes
const [users, posts] = await Promise.all([
  fetchUsers(),
  fetchPosts()
]);

// Promise.allSettled : Inspecter l'etat de chaque requete
const results = await Promise.allSettled([reqA(), reqB()]);
results.forEach((res) => {
  if (res.status === 'fulfilled') console.log('Value:', res.value);
  else console.error('Reason:', res.reason);
});

Syntaxe Équivalente avec Async / Await

async function getUserData(id) {
  try {
    const res = await fetch(`/api/users/${id}`);
    const data = await res.json();
    return data;
  } catch (err) {
    console.error('Failed to retrieve user:', err);
    throw err;
  }
}

References

Sujets associés