Umgang mit Netzwerkausfällen mit Promise Waiting
In JavaScript ist Promise.all() ein leistungsstarkes Tool zur Verwaltung mehrerer asynchroner Vorgänge. Es ist jedoch möglicherweise nicht geeignet, wenn Sie möchten, dass alle Versprechen erfüllt werden, auch wenn einige davon abgelehnt werden.
Um dieses Szenario zu bewältigen, können Sie eine benutzerdefinierte „Promise Reflect“-Funktion implementieren, die Versprechen in Objekte mit erfüllten oder abgelehnten Versprechen umwandelt Status:
const reflect = p => p.then(v => ({ v, status: "fulfilled" }), e => ({ e, status: "rejected" }));
Mit dieser Reflect-Funktion können Sie das ursprüngliche Array von Versprechen einem Array von reflektierten Arrays zuordnen Versprechen:
var arr = [ fetch('index.html'), fetch('http://does-not-exist') ] var reflectedPromises = arr.map(reflect);
Schließlich können Sie Promise.all() verwenden, um darauf zu warten, dass alle reflektierten Versprechen abgeschlossen sind:
Promise.all(reflectedPromises).then(results => { var success = results.filter(x => x.status === "fulfilled"); });
Dieser Ansatz ermöglicht es Ihnen, Netzwerkausfälle elegant zu behandeln und fortzufahren erst nachdem alle Anfragen abgeschlossen sind. Sie können über die Arrays „Erfolg“ und „Ergebnisse“ auf die aufgelösten Werte und Fehler zugreifen.
Alternativ können Sie jetzt die native Promise.allSettled()-Methode verwenden:
Promise.allSettled([promise]).then(([result]) => { console.log(result); // Handles both fulfilled and rejected promises });
Das obige ist der detaillierte Inhalt vonWie kann ich Netzwerkausfälle bei der Verwendung von Promises in JavaScript ordnungsgemäß behandeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!