具有定时器的倒数计时器可观察到Angle2中的RXJS

时间:2017-06-29 08:43:44

标签: angularjs rxjs angular2-services countdowntimer

我正在使用计时器可观察的angularjs2构建一个倒数计时器(没有找到任何其他使用angular2的解决方案)。计时器从15:00开始,然后下降到00:00。看看代码。我面临的问题是,首先计时器正在减少1秒,但随着时间的推移,秒点数增加到15:00到14:00,计时器运行正常。在14:00 -13:00,与手机上的秒表上运行的计时器相比,差距为2-3秒。逐渐这个秒间隙增加,直到它达到00:00,差异是3-4分钟,即计时器运行超过15:00分钟,如果我切换标签间隙增加,可能需要30分钟或1小时倒计时到15:00分钟。

import {Observable} from "rxjs/Rx";
import { Subscription } from "rxjs/Subscription";

public timer = Observable.timer(1000, 1000);
public startTime = 900;
  public timerfunction(): void {
           if ( this.counter < 10) {
           this.timerSubs = this.timer.subscribe((tt) => {
            //  console.log("inside timer" + this.counter);
             this.timerfunc(tt);
            });
           this.unsubscribeTimer();
          }
           this.counter = this.counter + 1;
  }
​public timerfunc(tt: number){
{ console.log("Timer ticks" + " : " + tt); 
  if (tt < this.startTime && tt !== 0) {
      if (tt % 60 === 0 && tt !== 0 && this.minutes !== 0) {
     // console.log("t" + tt + this.minutes + ":" + this.seconds );
     this.minutes = this.minutes - 1;
     this.seconds = 59;
    // console.log(this.startTime + "start time");
    }else {
     // console.log( "this.seconds ----- fucTTT" + this.seconds );
      if (this.seconds !== 0) {
      this.seconds = this.seconds - 1;
      } else if (this.seconds === 0 && this.minutes !== 0) {
        this.seconds = 59;
        this.minutes = this.minutes - 1 ;
      //  console.log("inside this loop");
      }
      // console.log("minutes" + this.minutes + "seconds" + this.seconds);
    }
  }}

0 个答案:

没有答案