Maison >interface Web >js tutoriel >Comment puis-je gérer efficacement les pannes de réseau lors de l'utilisation de promesses en 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" }));
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);
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"); });
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 });
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!