Capturer les erreurs de récupération avec l'état de la réponse
Vous exploitez l'API fetch() avec Redux et la bibliothèque redux-promise-middleware. Dans votre extrait de code, vous essayez de vérifier l’état de la réponse et de gérer les erreurs. Cependant, vous rencontrez un problème où la promesse n'est pas rejetée.
Comprendre les rejets de promesse de récupération
Les promesses de récupération sont uniques dans le sens où elles sont rejetées uniquement en raison de erreurs de réseau. Les réponses avec des codes d'état tels que 4xx (erreurs client) et 5xx (erreurs serveur) sont considérées comme des erreurs non liées au réseau. Par conséquent, ils ne déclencheront pas de rejet.
Résoudre le problème
Pour surmonter cette limitation et gérer les erreurs liées au statut, vous devez générer manuellement une erreur :
fetch(url) .then((response) => { if (response.ok) { return response.json(); } throw new Error('Something went wrong'); }) .then((responseJson) => { // Handle the data }) .catch((error) => { // Handle the error });
Cet extrait de code vérifie l'état de la réponse (response.ok). Si ce n'est pas OK, une erreur est générée qui déclenche le gestionnaire Promise#catch(). Cela vous permet de gérer gracieusement les erreurs basées sur les codes d'état HTTP.
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!