ci sono usi utili di readyState diverso da “4” (completo) in un callback XHR.onreadystatechange?
-
12-10-2019 - |
Domanda
Hai mai usato un oggetto XHR per intercettare onreadystatechange con un diverso readyState da "4" (completo)?
Sono curioso di sapere se mai innescare una funzione con i possibili valori diversi. Non riesco a immaginare un vero e proprio uso degli altri stati. Sono in qualche modo utile per fare qualcosa?
Può dare alcuni esempi pratici se del caso?
- 0: richiesta non inizializzate
- 1: connessione al server stabilita ??li>
- 2: richiesta ricevuta ??li>
- 3: elaborazione della richiesta ??li>
- 4: Richiesta finito e la risposta è pronta ??li>
Soluzione
Io lo uso su una rete intranet ho sviluppato ai fini della notifica. Intercettando lo stato di 3 posso informare l'utente che la richiesta ha iniziato.
Ho anche usarlo per tempo le richieste di tempi di trasmissione. Visualizzo il tempo trascorso tra stati 3 e 4.
Da quando uso MooTools ho esteso la classe richiesta per generare l'evento onStateChange:
var EarlyRequest = new Class({Extends: Request,
onStateChange: function() {
this.fireEvent("onStateChange", [this.xhr.readyState]);
this.parent();
}
});
In una nota aggiuntiva. Le definizioni degli stati che hai postato (da w3cschools) sono fuorvianti, questi sono più chiaro per me (da http://www.w3.org/TR/XMLHttpRequest/#states ):
-
UNSENT (valore numerico 0) L'oggetto è stato costruito.
-
APERTO (valore numerico 1) Il metodo open () è stata invocata con successo. Durante questo stato intestazioni di richiesta possono essere impostati utilizzando setRequestHeader () e la richiesta può essere fatta utilizzando il metodo send ().
-
HEADERS_RECEIVED (valore numerico 2) Tutti i reindirizzamenti (se presenti) sono stati seguiti e sono stati ricevuti tutti gli header HTTP della risposta finale. Diversi membri di risposta dell'oggetto sono ora disponibili.
-
CARICAMENTO (valore numerico 3) Il corpo dell'entità di risposta viene ricevuto.
-
DONE (valore numerico 4) Il trasferimento dei dati è stato completato o qualcosa è andato storto durante il trasferimento (per esempio reindirizzamenti infiniti).