, wenn Sie einen gameLog Objekt haben, dann können Sie SetTimeout verwenden alle alle 30 seine Eigenschaften löschen Minuten und, wenn Sie weitermachen möchten, rufen Sie setTimeout wieder für weitere 30 Minuten und so weiter.
var keepGoing = true;
var gameLog = Object.create(null);
gameLog.someProperty = 'foo'; // some initial property
var clearLog = (function() {
var lag;
return function (delay) {
lag = lag || delay || 1.8e6; // default is 30 minutes
Object.keys(gameLog).forEach(function(key) {
delete gameLog[key];
});
if (keepGoing) {
setTimeout(clearLog, lag)
}
console.log('log cleared... ' + JSON.stringify(gameLog));
};
}());
clearLog(1000); // call every second for example
jederzeit keepGoing auf false bedeutet clearLog läuft stoppt nach dem nächsten läuft SetTimeout. Sie können sich auch an den Wert erinnern, der von setTimeout zurückgegeben wird, und diesen auch abbrechen.
würde ich wahrscheinlich gameLog als Objekt mit nicht-zählbaren Methoden (mit defineProperty) für Start, schreibe, klar, implementieren und stoppen, wo sie Anschlag löscht und stoppt auch die setTimeout.
Wahrscheinlich * setTimeout * und löschen Sie alle Eigenschaften, oder legen Sie sie auf * null *? Was hast du probiert? – RobG
Ich habe ein Zeitlimit gesetzt, aber das wird nur einmal passieren. Ich kann setInterval einstellen, aber gibt es einen besseren Weg, dies oder jenes zu tun? – user1354934
Jedes Mal, wenn Sie setTimeout aufrufen, trainieren Sie, ob Sie es erneut anrufen möchten, und rufen Sie es dann in weiteren 30 Minuten an. Ich denke, das ist besser als * setInterval *. – RobG