setInterval和setTimeout从内部对象中提升

时间:2018-03-31 20:42:47

标签: javascript jquery settimeout setinterval

我写了一个简单的脚本,在一段时间后将某人记录下来。我正在遇到JS Hint的一个只读问题,我想解决但是我有点卡住了。我的脚本中是否应该更改以允许返回我的2个超时功能和1个间隔功能?理想情况下,我想让他们远离全局,但我想不出一种方法可以将它们提升到可以在我休息的地方使用。

谢谢!

var timeOut = {
    time: "2700000",                // in ms (45 mins)
    time_alert: "30000",            // in ms (30 seconds)
    init: function(){
        $("#modal_timeout").on("hidden.bs.modal",function(){
            timeOut.reset();
        });

        var timeout_Countdown = (timeOut.time/1000) - 1;

        timeOut_display = setInterval(function(){
            $("#modal_timeout span.timeoutCountdown").text(timeout_Countdown);
            timeout_Countdown = timeout_Countdown-1;
        },1000);

        timeOut_timer = setTimeout(function(){
            $(".topmenu #logout").trigger("click");
        },timeOut.time);

        timeOut_alerter = setTimeout(function(){
            $("#modal_timeout").modal();
        },timeOut.time-timeOut.time_alert);
    },
    reset: function(){
        clearTimeout(timeOut_display);
        clearTimeout(timeOut_timer);
        clearTimeout(timeOut_alerter);
        timeOut.init();
    }
};

2 个答案:

答案 0 :(得分:0)

你看过的东西太久了,错过了明显的答案?感谢@charlietfl。

我必须创建主时间的3个函数属性:

r = requests.get('https://api.wit.ai/message?v=20160918&q=%s' % speech,
                         headers={"Authorization": wit_ai_token}).json()
our_timestamp = r['entities']['time'][0]['value']

答案 1 :(得分:-2)

当然,如果已定义,您可以按名称杀死间隔或超时。

但有时,我们超出范围,未清除的间隔对慢速计算机来说是一种痛苦。

在这种情况下,您可以尝试这样做:通过他们的pid杀死所有间隔。

在我的测试之后,您可以修改限制,它应该是64000.此数字是浏览器可以设置的最大间隔。它可能会变化,或进化!只需几毫秒来迭代,所以我不认为它是禁止的方式,它运作良好。

function killallIntervals(){
     for (var i = 1; i < 68000; i++)
        window.clearInterval(i); 
 }

更新了快速展示!

setInterval(function(){ console.log("Interval!") }, 400)
setInterval(function(){ console.log("Another Interval!") }, 700)
setInterval(function(){ console.log("Too much Intervals!") }, 800)
setInterval(function(){ console.log("I want to") }, 1200)
setInterval(function(){ console.log("Die!") }, 1400)


setTimeout(function(){ 
  
  killallIntervals()
  
  console.log("exTerminated!") 
  
  }, 7000)


function killallIntervals(){
  for (var i = 1; i < 68000; i++)     
  window.clearInterval(i); 
}

它也可以预测超时。