Bonjour
.
Envoyé par
Jay M
Bravo pour ce 3ème volet très didactique !
Merci
.
Envoyé par
Jay M
une petite faute de frappe dans ...
Il semblerait
. En même temps, si c'est la seule...
Envoyé par
Jay M
éventuellement une petite suggestion:...
Le couple de tests classique est effectivement :
(xhr.readyState == 4 && xhr.status == 200)
Ce n'est pas un mystère.
Pourquoi ai-je déchiré ce couple
? eh bien ! dans notre cas, le second membre ne servira pas à grand chose. Il ne s'agit pas ici d'un serveur Apache destiné à faire tourner le site web de la NASA (si tant est que la NASA utilise un serveur Apache). J'ai déjà eu l’occasion de le dire, et je le répète, nous sommes sur un Arduino UNO, dans un réseau local privé, pour des applications non critiques. On n'est pas obligé de sortir l'artillerie lourde, et c'est d’ailleurs pourquoi j'ai simplifié l'utilisation de XHR qui se fait très souvent par l'intermédiaire d'une fonction de
callBack dont le mécanisme n'est pas toujours très facile à comprendre.
Donc les deux points qui font que je n'utilise pas ce test sont :
1 un paquet envoyé d'un poste à un autre sur un réseau local privé a bien peu de risque de ne pas arriver ;
2 s'il n'arrive pas, c'est-à-dire si
xhr.status != 200, il ne se passera rien et la chose la plus simple à faire est d'attendre l'arrivée du paquet suivant qui va suivre à une seconde d'intervalle. Faire ce test n'est intéressant que s'il est utile de traiter un éventuel résultat négatif, ce qui est superflu ici. Par contre, rien n'empêche l'utilisateur d'implémenter ce traitement si son application personnelle le nécessite.
Envoyé par
Jay M
Petite note au passage:...
Le chiffre "4" peut être considéré "magique" quand on ne connait pas sa signification. Dans notre cas, sa signification est explicitée quelques lignes plus haut, avec les autres valeurs que peut prendre le paramètre xhr.readyState. Il n'y a donc plus de magie. De plus, en toute rigueur, vous auriez donc dû mettre
xhr.statusText == "OK" au lieu de
xhr.status == 200 pour être en accord avec votre remarque.
Je ne sais pas si on recommande vraiment de ne pas utiliser les "nombres magiques", mais ils sont pourtant présents dans
tous les beaucoup de codes, ne serait-ce que dans ce test AJAX que j'ai toujours vu écrit comme ça. S'ils existent, c'est bien pour être utilisés. Il y a bien d'autres raccourcis de codage, dans le langage C notamment, qui me semblent bien plus magiques et incompréhensibles aux non initiés (dont je suis). Le tout est de savoir ce qu'on fait (et ce n'est pas toujours facile ;-).
Envoyé par
Jay M
PS1:
Ce n'est pas un oubli. C'est mon choix typographique (voir ci-dessus). Je trouve que "))" n'est pas très esthétique (dans une phrase du moins : dans du code, c'est standard). C'est évidemment tout à fait personnel. Je faisais bien entendu allusion à l'esthétique très basique de mon exemple
.
Envoyé par
Jay M
PS2:
Dont acte
!
Envoyé par
Jay M
PS3:
En fait, d'après ce que j'avais cru comprendre dans un tutoriel C que j'ai étudié, quand une demande d'allocation n'aboutissait pas, notamment par manque de place, un pointeur "NULL" était renvoyé : le but de ce test était donc en théorie de stopper le programme dans ce cas.
Pour la dimension du tableau (127), je précise bien dans le chapitre
VIII. Conclusion qu'elle peut être revue à la baisse en fonction des besoins.
Envoyé par
Jay M
PS4:
Complexe, mon code ?! Vous me flattez
. Non, n'exagérons rien. Peut-être un peu lourd et on peut évidemment s'en passer. Seulement voilà.
Je ne connais pas bien le C. Si l'EDI Arduino utilisait le Pascal (dans lequel, d'ailleurs, le traitement des chaînes de caractère est très différent) je serais au paradis, mais ce n'est pas le cas. Je me suis donc mis au C, sans forcément beaucoup d'enthousiasme, pour pouvoir "travailler" avec cette plateforme, et je suis bien certain de ne pas être le seul. Mais bon ! la programmation reste de la programmation, quelque soit le langage utilisé. Il faut s'adapter. Je n'ai rien contre le C, mais sa syntaxe est radicalement différente de celle du Pascal, et c'est un changement de paradigme délicat à intégrer. Par contre, sa similitude avec celle du JavaScript est un avantage quand on utilise les deux dans une même réalisation, comme ici.
Je me doutais bien que ces fonctions existaient, mais j'ai estimé plus rapide de les écrire que de les chercher. Cela dit, pour mon usage personnel, j'utilise la classe String qui me convient très bien et qui ne m'a jamais causé de misère. Et comme pour les "nombres magiques", si elle existe, c'est bien pour être utilisée. Mais chacun a le droit d'avoir son opinion et ses habitudes. La richesse est dans la diversité.
Merci pour votre intérêt et vos commentaires
,
amicalement,
naute
1 |
0 |