Ich versuche, das Ergebnis, das nächste Mal des Spiels in der Datenbank zu bekommen. Ich habe XMLHttpRequest mit 5s Verzögerung von setInterval zum Abrufen von Daten verwendet. Wenn der Status der Anfrage 200 ist. Der Code funktioniert gut. Wenn der Status jedoch nicht 200 ist, funktioniert ClearInterval nicht, aber console.log funktioniert weiterhin.clearInterval funktioniert nicht mit XMLHttpRequest
var _resInterval;
_resInterval = setInterval(function() {
var xhr = new XMLHttpRequest();
xhr.open("POST", "/index.php/forms/getDDResult/" + id, true);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.onload = function() {
if (xhr.status === 200) {
var _resp = JSON.parse(xhr.responseText);
console.log(_resp);
if (parseInt(_resp.interval) >= 0) {
clearInterval(_resInterval);
restartGame(parseInt(_resp.interval));
}
} else {
console.log("error");
clearInterval(_resInterval);
}
};
xhr.send();
}, 5000);
UPDATE: rekursive Funktion
function getGameResult() {
var xhr = new XMLHttpRequest();
xhr.open("POST", "/index.php/forms/getDDResult/" + id, true);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.onload = function() {
if (xhr.status === 200) {
var _resp = JSON.parse(xhr.responseText);
console.log(_resp);
if (parseInt(_resp.interval) >= 0 && _resp.result != "Not available") {
restartGame(parseInt(_resp.interval));
} else {
setTimeout(function() {
getGameResult();
}, 5000);
}
}
};
xhr.send();
}
Bin ich es richtig tun, oder sollte ich es rekursive Funktion ändern? Vielen Dank.
- Lara
Was meinen Sie mit "der clearInterval wird nicht funktionieren"? –
@EvanTrimboli Hallo, danke, dass du mir Zeit für meine Frage gegeben hast. clearInterval wird den setInterval stoppen, oder? Es hört nicht auf, den Code auszuführen. Ich bin mir nicht sicher, ob die Verwendung der rekursiven Funktion für diese Art von Situation gut ist, aber rekursiv funktioniert gut für mich. Warten auf einige Javascript-Helden, um Wissen zu teilen: D –