Ich verwende eine XMLHttpRequest
innerhalb eines Versprechens. Da der Server manchmal im Leerlauf ist, würde ich gerne 3 Versuche machen, wenn ein Fehler auftritt.XMLHttpRequest - Daten erneut senden bei xhr-Fehler
Wenn Sie jedoch wie folgt vorgehen, erhöhen Sie den Object state must be opened
Fehler in Zeile xhr.send()
in der function sendData()
. Warum?
Ich denke, die xhr ist bereits geöffnet. Was wäre der richtige Weg, dies zu erreichen?
function _callService(url, postData) {
return new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
var attempts = 0;
xhr.open("POST", url);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
resolve(xhr.response);
}
}
};
xhr.addEventListener("error", onXhrError);
function sendData() {
//here I get the Object state must be opened when this is called from onXhrError listener
xhr.send(postData);
};
function onXhrError() {
console.log("onXhrError");
if (attempts < 3) {
attempts += 1;
sendData();
} else {
reject("OnXhrError")
}
};
sendData();
});
ist ein xhr Zustand immer getan, wenn ein Fehler auftritt? –
Siehe _ "done \t DONE (numerischer Wert 4) \t Die Datenübertragung wurde abgeschlossen oder während der Übertragung ist ein Fehler aufgetreten (z. B. unendliche Weiterleitungen)." _ Https://xhr.spec.whatwg.org/#states, http : //jsfiddle.net/uxae61c8/ – guest271314
fantastisch! Vielen Dank für Ihre Hilfe! –