Maison > interface Web > js tutoriel > Comment puis-je gérer efficacement les pannes de réseau lors de l'utilisation de promesses en JavaScript ?

Comment puis-je gérer efficacement les pannes de réseau lors de l'utilisation de promesses en JavaScript ?

Patricia Arquette
Libérer: 2024-12-15 17:21:16
original
637 Les gens l'ont consulté

How Can I Gracefully Handle Network Failures When Using Promises in JavaScript?

Gérer les pannes de réseau avec Promise Waiting

En JavaScript, Promise.all() est un outil puissant pour gérer plusieurs opérations asynchrones. Cependant, cela peut ne pas convenir lorsque vous souhaitez que toutes les promesses se réalisent, même si certaines les rejettent.

Pour gérer ce scénario, vous pouvez implémenter une fonction personnalisée « Promise Reflect » qui convertit les promesses en objets avec des valeurs remplies ou rejetées. status :

const reflect = p => p.then(v => ({ v, status: "fulfilled" }), e => ({ e, status: "rejected" }));
Copier après la connexion

En utilisant cette fonction de réflexion, vous pouvez mapper le tableau original de promesses à un tableau de promesses réfléchies promesses :

var arr = [ fetch('index.html'), fetch('http://does-not-exist') ]
var reflectedPromises = arr.map(reflect);
Copier après la connexion

Enfin, vous pouvez utiliser Promise.all() pour attendre que toutes les promesses réfléchies se terminent :

Promise.all(reflectedPromises).then(results => {
    var success = results.filter(x => x.status === "fulfilled");
});
Copier après la connexion

Cette approche vous permet de gérer les pannes de réseau avec élégance et de continuer seulement une fois que toutes les demandes ont été complétées. Vous pouvez accéder aux valeurs et aux erreurs résolues à partir des tableaux de réussite et de résultats, respectivement.

Alternativement, vous pouvez désormais utiliser la méthode native Promise.allSettled() :

Promise.allSettled([promise]).then(([result]) => {
    console.log(result);  // Handles both fulfilled and rejected promises
});
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal