Maison > Article > interface Web > Comment gérer les erreurs individuelles dans Promise.all et accéder aux données de promesse non affectées ?
Détection des erreurs dans Promise.all
Problème :
Lors de l'utilisation de Promise.all pour gérer un éventail de promesses, détecter les erreurs de promesse individuelles est un défi car Promise.all renvoie la première erreur rencontrée et ignore le reste. Par conséquent, les données des promesses non affectées dans le tableau deviennent inaccessibles.
Solution :
Le comportement inhérent de Promise.all est de renvoyer un tableau de valeurs résolues ou de le rejeter avec une seule erreur en cas de rejet d'une promesse de membre.
Cependant, vous pouvez modifier votre code comme suit pour gérer les erreurs individuelles tout en recevant les valeurs des promesses réussies :
existingPromiseChain = existingPromiseChain.then(function() { var arrayOfPromises = state.routes.map(function(route) { return route.handler.promiseHandler() .then(function(data) { return data; }) .catch(function(err) { return { error: err }; }); }); return Promise.all(arrayOfPromises); }); existingPromiseChain = existingPromiseChain.then(function(arrayResolved) { // do stuff with my array of resolved promises (values or error objects), eventually ending with a res.send(); });
Explication :
En détectant les erreurs individuellement et en renvoyant les objets d'erreur, vous permettez à Promise.all de résoudre avec un tableau qui contient à la fois les valeurs résolues et les objets d'erreur. Votre bloc then() suivant peut alors gérer ce tableau mixte en conséquence.
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!