Motifs de concurrence (all/settled/race) et types
Modélisez la concurrence avec Promise.all / allSettled / race, comprenez leurs types de résultat et construisez des utilitaires sûrs.
Motifs de concurrence (all/settled/race) et types est une leçon TypeScript Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 3. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage TypeScript Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours TypeScript Academy comprend 3 leçons au total.
Introduction
Objectif : exécuter des tâches simultanément avec Promise.all, gérer les résultats mixtes avec allSettled et utiliser race pour les délais d’expiration et les solutions de repli. Apprenez les types renvoyés par chacune de ces fonctions.
all : types de tuples
Promise.all utilisé avec un tuple préserve les types et l’ordre des éléments ; chaque élément est attendu jusqu’à son type interne.
async function one(): Promise<number> { return 1 }
async function two(): Promise<string> { return "two" }
async function runAll() {
const [a, b] = await Promise.all([one(), two()]);
// a: number, b: string
console.log(a + 1, b.toUpperCase());
}
runAll();all : mappage concurrent
Lancez d’abord plusieurs tâches, puis utilisez await pour les attendre ensemble. Promise.all produit ici un string[].
async function fetchItem(id: number): Promise<string> {
return `item-${id}`;
}
async function getMany(ids: number[]): Promise<string[]> {
const tasks = ids.map(id => fetchItem(id)); // start all
return Promise.all(tasks); // await all
}
getMany([1,2,3]).then(xs => console.log(xs));Typage de allSettled
allSettled ne rejette jamais la Promise ; il se résout en un tableau d’objets de résultat fulfilled ou rejected, que vous pouvez affiner grâce à status.
async function mightFail(n: number): Promise<number> {
if (n % 2 === 0) return n; else throw new Error("odd")
}
async function runSettled() {
const results = await Promise.allSettled([mightFail(1), mightFail(2)]);
for (const r of results) {
if (r.status === "fulfilled") {
// r: PromiseFulfilledResult<number>
console.log("ok", r.value);
} else {
// r: PromiseRejectedResult
console.warn("fail", r.reason);
}
}
}
runSettled();race et délai d’expiration
race se résout ou se rejette avec la première Promise terminée. Combinez-le avec un délai d’expiration pour limiter la latence.
function timeout<T>(ms: number, msg = "Timeout"): Promise<T> {
return new Promise((_, reject) => setTimeout(() => reject(new Error(msg)), ms));
}
async function slow(): Promise<string> { return new Promise(res => setTimeout(() => res("done"), 100)); }
async function withTimeout() {
const result = await Promise.race<Promise<string>>([
slow(),
timeout<string>(50, "Too slow"),
]);
console.log(result);
}
withTimeout().catch(e => console.error("raced:", e.message));Conseils et choix
Conseils :
- all : collecte des résultats avec échec immédiat.
- allSettled : collecte les réussites et les erreurs sans lever d’exception.
- race : délais d’expiration et solutions de repli ; indiquez explicitement les types des éléments.
Vérification du typage de Promise.all
Vérification rapide : quelle affirmation concernant le typage de Promise.all est TRUE ?
Récapitulatif
Récapitulatif : utilisez all pour un parallélisme correctement typé, allSettled pour examiner tous les résultats et race pour les délais d’expiration ; connaissez les structures renvoyées par chaque API.
Apprends TypeScript avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 101
- Leçons
- 352
Questions Fréquemment Posées
La leçon « Motifs de concurrence (all/settled/race) et types » est-elle gratuite ?
Oui — le texte complet de « Motifs de concurrence (all/settled/race) et types » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours TypeScript Academy, passe à CoddyKit PRO. Le cours TypeScript Academy comprend 3 leçons au total.
Qu'est-ce que j'apprendrai dans « Motifs de concurrence (all/settled/race) et types » ?
Modélisez la concurrence avec Promise.all / allSettled / race, comprenez leurs types de résultat et construisez des utilitaires sûrs. Tu pratiques TypeScript Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer TypeScript Academy ?
Aucune expérience préalable n'est requise. TypeScript Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 3.
Combien de temps prend la leçon « Motifs de concurrence (all/settled/race) et types » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon TypeScript Academy ?
Oui. Chaque leçon TypeScript Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Promise , typage de async/await
- Typage des erreurs (unknown), réduction dans catch
- Motifs de concurrence (all/settled/race) et types