如何清除对象 30 分钟(长时间运行)



我正在制作一个小的javascript文本RPG,我想每30分钟清除一些值。 这些只是我的目的的日志,但不幸的是,我现在需要它们进行调试。

例如,我有一个gameLog = {},我正在向其添加一些键,以便在执行某些函数时对其进行跟踪。 我想每 30 分钟清除一次,但我需要它长时间运行。 最好的方法是什么? 谢谢

// initialize gameLog as global variable
gameLog = {};
function gameLogClear(){
  gameLog = {};
}
// setup repeating job
gameLogClearTimer = setInterval(gameLogClear, 30 * 60 * 1000);
// timer can be removed with:
// clearInterval(gameLogClearTimer);

引用:

  • setInterval()
  • clearInterval()

如果你有一个gameLog对象,那么你可以使用setTimeout每30分钟删除一次它的所有属性,如果你想继续,再次调用setTimeout30分钟,依此类推。

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

在任何时候,将 keepGo 设置为 false 意味着 clearLog 将在下一个 setTimeout 运行后停止运行。您还可以记住 setTimeout 返回的值并取消它。

我可能会将gameLog实现为具有非枚举方法(使用defineProperty(的对象,用于启动,写入,清除和停止,其中停止清除它并停止setTimeout。

相关内容

最新更新