Angular 6 запускает код каждые 5 секунд, но он выдает в первый раз - PullRequest
0 голосов
/ 20 января 2019

Я хочу запустить свой код, как только он попадет в мой компонент, и повторять логику каждые 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? Если нет, может быть альтернатива interval

Ответы [ 2 ]

0 голосов
/ 20 января 2019

Вы можете использовать timer.Он делает то же самое, что и interval, но добавляет необходимую вам функциональность: управление первым излучением.

ngOnInit() {
  const ticker = timer(0, 5000);
  ticker.subscribe(() => {
    this.calculateTime();
  });
}
0 голосов
/ 20 января 2019

Попробуйте следующее:

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