从setTimeout()调用setInterval()不会启动计时器

时间:2018-05-03 22:47:55

标签: javascript settimeout setinterval

我有一个任务是在预定义的时间之后调出一个bootstrap模态窗口,我使用setTimeout()。然后另一个任务是在模​​态窗口的主体中显示倒计时 - 但是从setTimeout()函数调用setInterval()不会做任何事情。

func = function(warntime) {
   func.tid = setInterval(function() {
     $("#dialog-countdown").html(warntime--);
       if(warntime == 0) {
           doSignout();
       }
   }, 1000);
};

var tmwarn = setTimeout(function(){
         $("#timeout-modal").modal("show");
         func(60);
   }, 20000);

因此func()调用不会启动计时器,至少不会启动Chrome或Safari或IE。

怎么了?任何解决方法?

1 个答案:

答案 0 :(得分:0)

如果我理解正确,你需要这样的东西:

func = function(warntime) {
   func.tid = setInterval(function() {
     warntime--;
     console.log('warntime: ', warntime);
       if(warntime == 0) {
           doSignout(func.tid);
       }
   }, 2000);
};

doSignout = function(id) {
   console.log('signing out');
   clearInterval(id) 
}

setTimeout(function(){
    func((sessionTimeout - sessionTimeoutWarning)/1000);
}, sessionTimeoutWarning);

here's the working fiddle