Ich habe ein paar große Formulare, die Probleme mit dem Ausfüllen vor dem Sitzungszeitlimit verursachen. Ich brauche ein kleines Javascript, um am Ende der Seite einzufügen, um alle paar Minuten eine Datei zu pingen, um das Session-Timeout zu aktualisieren, solange die Seite geöffnet ist. Ich habe also eine Funktion, die die letzte Anweisung ist, die Funktion nach einer Lücke erneut aufzurufen. Aus verschiedenen Gründen sind jQuery und andere Frameworks dafür nicht verfügbar. So habe ich das zusammen von https://stackoverflow.com/a/35970894/385011Mein Heartbeat pausiert nicht für Timeout-Wert
var getJSON = function(url, callback) {
var xhr = new XMLHttpRequest();
xhr.open("get", url, true);
xhr.responseType = "json";
xhr.onload = function() {
var status = xhr.status;
if (status == 200) {
callback(null, xhr.response);
} else {
callback(status);
}
};
xhr.send();
};
//hearbeat
function heartbeat(heartbeaturl){
getJSON(heartbeaturl,function(err, data) {
console.log(Date.now());
console.log(data.time);
setTimeout(heartbeat(heartbeaturl), data.time);
});
}
console.log("run heartbeat");
heartbeat("heartbeat.json")
data.time 60000 zurückkehrt, so sollte es Herzschlag pro Minute laufen, aber es sin alle 1 ~ 4 ms ausgeführt wird. Was vermisse ich?
Alternativ zum Erstellen einer neuen anonymen Funktion ist die Übergabe der Parameter an 'setTimeout' wie so - 'setTimeout (Heartbeat, data.time, heartbeaturl)'. Alles nach der Verzögerung wird an die verzögerte Funktion übergeben, wenn sie ausgeführt wird. – vlaz