Heim > Artikel > Web-Frontend > Wie gehe ich mit einzelnen Fehlern in Promise.all um und greife auf nicht betroffene Promise-Daten zu?
Fehler in Promise.all abfangen
Problem:
Bei der Verwendung von Promise.all Wenn Sie eine Reihe von Versprechungen verarbeiten, ist das Erkennen einzelner Versprechungsfehler eine Herausforderung, da Promise.all den ersten aufgetretenen Fehler zurückgibt und den Rest ignoriert. Folglich sind Daten aus nicht betroffenen Versprechen im Array nicht mehr zugänglich.
Lösung:
Das inhärente Verhalten von Promise.all besteht darin, ein Array aufgelöster Werte zurückzugeben oder mit abzulehnen ein einzelner Fehler bei Ablehnung eines Mitgliedsversprechens.
Sie können Ihren Code jedoch wie folgt ändern, um einzelne Fehler zu behandeln und dennoch Werte aus erfolgreichen Versprechen zu erhalten:
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(); });
Erklärung :
Indem Sie Fehler einzeln abfangen und Fehlerobjekte zurückgeben, ermöglichen Sie Promise.all die Auflösung mit einem Array, das sowohl aufgelöste Werte als auch Fehlerobjekte enthält. Ihr nachfolgender then()-Block kann dieses gemischte Array dann entsprechend verarbeiten.
Das obige ist der detaillierte Inhalt vonWie gehe ich mit einzelnen Fehlern in Promise.all um und greife auf nicht betroffene Promise-Daten zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!