代码之家  ›  专栏  ›  技术社区  ›  Varun Sukheja

角6每5秒运行一次代码,但它第一次发射

  •  0
  • Varun Sukheja  · 技术社区  · 5 年前

    我想在代码进入组件后立即运行它,每5秒重复一次逻辑

    这是我的代码,我使用了rxjs的间隔

    ngOnInit() {
      const ticker = interval(5000);
      ticker.subscribe(() => {
        this.calculateTime();
      });
    }
    

    但这里的问题是代码运行

    1st time at 5s 
    2nd time at 10s
    

    但我希望它能像

    1st time at 0s 
    2nd time at 5s
    3rs time at 10s
    

    这就是我的方法:

    ngOnInit() {
      const ticker = interval(5000);
      this.calculateTime();
      ticker.subscribe(() => {
        this.calculateTime();
      });
    }
    

    如果你注意到我打过电话 this.calculateTime(); 两次,一次在售票机前,第二次在售票机内。

    有更好的解决方案吗 interval ?如果不是,可能是 间隔

    2 回复  |  直到 5 年前
        1
  •  1
  •   a better oliver    5 年前

    你可以使用 timer . 它和 interval 但添加了您需要的功能:控制第一次发射。

    ngOnInit() {
      const ticker = timer(0, 5000);
      ticker.subscribe(() => {
        this.calculateTime();
      });
    }
    
        2
  •  0
  •   Kristian Vitozev    5 年前

    尝试以下操作:

    import { startWith } from 'rxjs/operators';
    // ....
    const ticker = interval(5000).pipe(
         startWith(0)
    );