如何在基于角度的应用程序中停止多个SetInterval

时间:2016-12-17 10:39:58

标签: javascript angularjs angularjs-directive angular-ui-router

myApp.run(function ($rootScope, $interval, $timeout, $state, $localStorage) {

    load = function () { 
            cdreset(); // reset the countdown to 0
            countdown(); // call the countdown function 
     $rootScope.stayLogin = function () {
            cdreset(); // reset the countdown to 0

            alert("Proceed functioncall");

            window.NewTimerCalC = function () { alert('trisssssgered'); return false; };
            NewTimerCalCProceed();          
        };

    }

$rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams, $rootScope, $state, $location) {

        NewTimerCalC();  
    });


    }); // end of run block


function NewTimerCalC(){
    var lastDigestRun = Date.now();
    var s = lastDigestRun + 2 * 60 * 1000;


    var idleCheck = setInterval(function () {
        if (currentUrl != window.location.href) {
            var now = Date.now();
            var displaytime = now - lastDigestRun > 2 * 60 * 1000;
            if (now - lastDigestRun > 1 * 60 * 1000) {
                alert("run block interval alert");
                //clearTimeout(timeclear);
                load();
            }
        }
    }, 60 * 1000);

}


// button click for staylogin.
function NewTimerCalCProceed() {
window.NewTimerCalC = function () { alert('trisssssgered'); return false; };


    var lastDigestRun = Date.now();
    var s = lastDigestRun + 2 * 60 * 1000;

    var idleCheck = setInterval(function () {
        if (currentUrl != window.location.href) {
            var now = Date.now();
            var displaytime = now - lastDigestRun > 2 * 60 * 1000;
            if (now - lastDigestRun > 1 * 60 * 1000) {
                alert("Proceed block interval alert");

                load();
            }
        }
    }, 60 * 1000);

}

当用户登录应用程序时,我已将注销时间设置为2分钟。 在1分钟之前,倒计时有60秒倒计时。 当它达到0秒时,重定向到登录页面。

在计数器之间60到1秒,如果他点击继续,则需要再为当前用户分配2分钟。

按预期工作。

用户第一次登录应用程序,用户获得2分钟的注销时间。 在1分钟之前,他得到一个警告框和倒计时。 有一个继续按钮。当用户点击继续按钮时,他又得到了2分钟。 在1分钟之前,他收到一条警告信息。如预期的那样。

问题。第一次正常工作时,单击“继续”时会出现问题。

倒计时正在运行,倒计时达到几秒钟,例如30秒,另一个间隔进程正在运行,并将时间重新分配为60秒。 如果用户没有点击任何内容,倒计时会一次又一次地重新分配。它没有达到0秒。

这里倒计时达到35个secons,由于多个间隔而再次分配到60秒。

enter image description here enter image description here

0 个答案:

没有答案