.catch empty response

Fermé
Max - Modifié le 24 avril 2020 à 10:19
 LimpBiscuit - 25 avril 2020 à 15:00
Bonjour,

J'essaie de gérer une réponse vide depuis plusieurs heures, mais sans succès.
De ce que j'ai compris, on doit utiliser .catch pour les erreurs, mais puisque un document vide n'est pas considéré comme un erreur, ça ne fonctionne pas.


function getViewers() { 
   fetch('blabla.xml')

   .then(response => response.text())
        .then(function(data) {
               let parser = new DOMParser(),
               xmlDoc = parser.parseFromString(data, 'text/xml');
               var count = xmlDoc.getElementsByTagName("Video").length;
               var status= "Online";
      } 
)


// Ici j'aimerais executer un action lorsque la response.text est vide.
//                 console.log("EmptyDocument");



}


EDIT : Ajout du LANGAGE dans les balises de code pour avoir la coloration syntaxique et l'indentation du code.
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code



Merci de votre aide!!
Max

1 réponse

Salut,
en effet rien à voir avec un "try catch"(essayer attraper) qui sert à la gestion des erreurs.

Un champ vide pour une chaîne de caractère c'est "" des guillemets vide.
Attention à e pas confondre à une réponse nulle(valeur null) qui est autre chose puisque ce n'est pas une chaîne.

Je ne répondrais pas exactement à votre question c'est à vous de voir mais ce qui compte c'est de traiter les exceptions ou dans le cas d'AJAX l'absence de réponse ou de contenu renvoyé puisque ce sont des exceptions dans le sens où ce n'est pas ce qui est voulu(enfin c'est normal qu'il n'y ait pas de réponse si celle ci est en cours aussi, il y a le principe de l'état actuel des données à prendre en compte) mais ceci devrais vous éclairer:


let chaineCaractere='';

if(chaineCaractere===''){
console.log('la chaîne existe et est vide');
}
let valeurNulle;
if(valeurNulle===null){
console.log('la variable existe mais à une valeur nulle');
}
/*
if(existePas===null) provoque une erreur puisqu'il n'y a pas de variable existePas donc difficile de la comparer...
*/
function verifNullOuStringVide(test){
if(test==='' || test==null){
console.log('la chaîne existe et est vide OU sa valeur est nulle ');
return true;
}return false;
}
verifNullOuStringVide(chaineCaractere);

chaineCaratere=null;/* réinitialise la variable en supprimant sa valeur aussi bien qui est '' (chaîne vide) que d'objet existant dans le système et nécessitant un emplacement mémoire. Ce qui a pour avantage de ne pas avoir à nécessité la mémoire pour une variable dont la valeur n'est plus utilisée par le système*/

verifNullOuStringVide(chaineCaractere);
chaineCaracter= New String();//-- crée un objet chaîne de caractère sans paramètre donc vide)

verifNullOuStringVide(chaineCaractere);

chaineCaracter= New String('blabla');//-- crée un objet chaîne de caractère avec un paramètre)

verifNullOuStringVide(chaineCaractere);
//-- Voir aussi typeof pour les comparaisons plus précises et déterminer le type d'une valeur

alert(typeof 'ceci est une chaîne' === typeof String);



Il y a aussi les valeurs NaN(not a number) et infinies qui permettent de détecter des types de valeurs(l'infini pouvant être une valeur infinie bien sûr mais aussi une valeur où la mémoire du programme n'est pas suffisante).
0