Y at-il des utilisations utiles de readyState différent de « 4 » (complet) dans un rappel XHR.onreadystatechange?
-
12-10-2019 - |
Question
Avez-vous déjà utilisé un objet XHR pour intercepter onreadystatechange avec un autre readyState de « 4 » (complet)?
Je suis curieux de savoir si vous déclenchez jamais une fonction avec les valeurs possibles différentes. Je ne peux pas imaginer une utilisation réelle des états des autres. Sont-ils un peu utile de faire quelque chose?
peut-il donner des exemples concrets le cas échéant?
- 0: demande non initialisées
- 1: connexion au serveur établie
- 2: demande reçue
- 3: demande de traitement
- 4: demande terminée et la réponse est prêt
La solution
Je l'utilise sur un intranet j'ai développé à des fins de notification. En interceptant l'état 3 je peux informer l'utilisateur que la demande a commencé.
Je l'utilise aussi en temps les demandes des temps de transmission. J'affiche le temps écoulé entre les états 3 et 4.
Depuis que je l'utilise MooTools j'étendu la classe de demande de tirer l'événement OnStateChange:
var EarlyRequest = new Class({Extends: Request,
onStateChange: function() {
this.fireEvent("onStateChange", [this.xhr.readyState]);
this.parent();
}
});
Sur une note complémentaire. Les définitions des états que vous avez publiés (de w3cschools) induisent en erreur, ce sont plus clair pour moi (de http://www.w3.org/TR/XMLHttpRequest/#states ):
-
UNSENT (valeur numérique 0) L'objet a été construit.
-
OUVRIR (valeur numérique 1) La méthode ouverte () a été invoquée avec succès. Au cours de ces en-têtes de demande de l'État peuvent être définies à l'aide setRequestHeader () et la demande peut être faite en utilisant la méthode send ().
-
HEADERS_RECEIVED (valeur numérique 2) Tous (réoriente le cas échéant) ont été suivies et tous les en-têtes HTTP de la réponse finale ont été reçues. Plusieurs membres de la réponse de l'objet sont maintenant disponibles.
-
chargement (valeur numérique 3) Le corps d'entité de réponse est reçu.
-
FAIT (valeur numérique 4) Le transfert de données est terminée ou quelque chose a mal tourné lors du transfert (par exemple infini réoriente).