Ich führe eine HTTP-Anfrage an eine Datei durch und abhängig von der Antwort, ob es "200" oder eine andere Antwort ist, wird eine Erfolgs- oder Fehlerfunktion ausgeführt. Diese Anfrage erfolgt jede Sekunde.Löschen eines Javascript-Intervalls
Das Problem, mit dem ich konfrontiert bin, ist, wenn ich viele Fehler Antworten bekommen sie alle zusammen laufen und der letzte hört nicht auf, z. Beende das Intervall, um ein neues zu beginnen.
Das rote Licht beginnt viel zu schnell zu blinken. Kann mir jemand helfen? Mein Code ist unten und ich spiele jetzt seit ein paar Stunden damit, aber ich kann nicht auf den Grund gehen.
var requestResponses = {
greenLight: $('.cp_trafficLight_Light--greenDimmed'),
redLight: $('.cp_trafficLight_Light--redDimmed'),
greenBright: 'cp_trafficLight_Light--greenBright',
redBright: 'cp_trafficLight_Light--redBright',
init: function (url) {
setInterval(function() {
requestResponses.getResponse(url);
}, 1000);
},
successResponse: function() {
var redBright = requestResponses.redBright,
greenBright = requestResponses.greenBright;
requestResponses.errorCode = false;
requestResponses.redLight.removeClass(redBright);
requestResponses.greenLight.addClass(greenBright);
},
errorResponse: function() {
requestResponses.runOnInterval();
},
runOnInterval: function() {
// clearInterval(runInterval);
var redBright = requestResponses.redBright,
greenBright = requestResponses.greenBright,
redLight = requestResponses.redLight;
requestResponses.greenLight.removeClass(greenBright);
var runInterval = setInterval(function() {
if (requestResponses.errorCode === true) {
redLight.toggleClass(redBright);
}
}, 400);
},
getResponse: function (serverURL) {
$.ajax(serverURL, {
success: function() {
requestResponses.errorCode = false;
requestResponses.successResponse();
},
error: function() {
requestResponses.errorCode = true;
requestResponses.errorResponse();
},
});
},
errorCode: false
}
requestResponses.init('/status');
Schätzen Sie die Hilfe.
Ich schätze Ihre Hilfe, aber mein Problem ist jetzt das Licht nicht Flash kontinuierlich, aber nur bei jeder Anfrage. Ich brauche das Licht, um kontinuierlich zu blinken und nicht langsamer oder schneller zu werden. – Harry
Dann ist das nur für Ihren zweiten Timer sinnvoll. Ich werde die Antwort entsprechend bearbeiten. –
Bulent, ich schätze deine Hilfe sehr, aber ich denke, wir sind vielleicht ein wenig von der Seite entfernt. Ich habe eine Geige befestigt, damit du mein Problem sehen kannst. Ich habe Ihren Code oben getestet, aber es scheint nur bis zu einem gewissen Grad zu funktionieren. Wenn Sie mir helfen können, werde ich Ihre Antwort mit Daumen hochhalten und weitermachen. Danke https://jsfiddle.net/gtfyugg0/1/ – Harry