Как очистить Timeout и очистить sessionStorage? - PullRequest
0 голосов
/ 30 марта 2020

все еще застрял :)

Мне нужно очистить Timeout, когда обратный отсчет закончится (vm.minutes == 0 и vm.secondes == 0) и когда мы нажмем кнопку, чтобы перезапустить ее.

Может быть здорово очистить sessionStorage, когда обратный отсчет закончится. Я знаю, что использовать, но это не работает ...

Есть мысли?

class Timer {

    constructor(secondes, minutes) {
      this.button = document.getElementById("button");
      this.counter = document.getElementById("counter");
      if(!this.storageCheck()){ //check if seconds are mins are stored in storage
        this.secondes = secondes; //if not set mins and sec to value passed in constructor
        this.minutes = minutes;
       }
       else{
      this.countdown();
      }
    }

     countdown() {
       // debugger;
       var vm=this;
        if(!(this.minutes-1<0))
           this.minutes--;
       let tick= function(){

           vm.secondes--
           if(vm.secondes== -1){
              vm.secondes=59;
              vm.minutes--;
           }
           vm.counter.innerHTML =  vm.minutes + ":" + (vm.secondes < 10 ? "0" : "") + vm.secondes;
           if(vm.minutes == 0 && vm.secondes==0){
            vm.counter.innerHTML =  vm.minutes + ":" + vm.secondes-1;
            vm.counter.innerHTML = "R&eacuteservation expir&eacutee";
            //webstorage.clearSessionStorage();
            }    
           else{
             var go = setTimeout(tick,1000);
           }
           sessionStorage.setItem("mins",vm.minutes);//set current min
           sessionStorage.setItem("secs", vm.secondes);//set current sec
         }
       var go = setTimeout(tick,1000);
     }    

    buttonClick() {
        button.addEventListener("click", () => {
            this.countdown();
        })
    }

    storageCheck() {
        if (sessionStorage.getItem("mins") && sessionStorage.getItem("secs")) {
            // keep the countdown running
            this.minutes=parseInt(sessionStorage.getItem("mins"))+1;//get min
            this.secondes=parseInt(sessionStorage.getItem("secs"));//get secs
            return true;
        }
        else
          return false;
    }
}

let newTimer = new Timer(60, 20); //60, 20
newTimer.buttonClick();
<!DOCTYPE html>
<html>
<head>
	<title>Test Countdown</title>
</head>
<body>

	<div id="counter"></div>
	<button id="button">storage</button>

	<script type="text/javascript" src="countdown.js"></script>

</body>
</html>

введите описание изображения здесь

...