Вызов setInterval () из setTimeout () не запускает таймер - PullRequest
0 голосов
/ 04 мая 2018

У меня есть задача вызвать модальное окно начальной загрузки по прошествии заданного времени, для которого я использую setTimeout (). Затем другая задача - показать обратный отсчет в теле модального окна - однако вызов setInterval () из функции setTimeout () ничего не делает.

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 голосов
/ 04 мая 2018

Если я вас правильно понимаю, вам нужно что-то подобное:

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

вот рабочая скрипка

...