如何清除物体30分钟(长时间运行)?

时间:2017-04-06 04:09:24

标签: javascript

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

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

2 个答案:

答案 0 :(得分:1)

// 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);

参考文献:

答案 1 :(得分:0)

如果您有 gameLog 对象,那么您可以使用 setTimeout 每30分钟删除一次所有属性,如果您想继续,请致电 setTimeout 再过30分钟,依此类推。



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




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

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