網站搜尋

typescript - 在 Angular 6 中,以下哪一種方法是設置重複定時任務的更好(高效/乾淨)方式?


在尋找在 Angular 中設置重複定時功能的方法時,我發現了各種不同的實現方式。我想知道哪一種方式會比較好。

我遇到過的實現方式:

設置間隔

this.interval = setInterval( () => { 
    // doSomething();
}, 1000);

Observable.interval

import {Observable} from 'rxjs'; // Angular 6

  Observable.interval(2000 * 60).subscribe(
    x => {
      // doSomething();
  });

Observable.timer

let timer = Observable.timer(2000,1000);
timer.subscribe(
  t => {
    // doSomething();
});

IntervalObservable

IntervalObservable.create(1000).subscribe(
  x => {
    // doSomething();
});

計時器可觀察物件

TimerObservable.create(0, this.interval)
  .takeWhile(() => this.alive)
  .subscribe(() => {
      this.myExampleService.get()
      .subscribe((data) => {
          this.data = data;
          if(!this.display){
            this.display = true;
          }
      });
  });

rxjs 計時器

import { timer, Observable, Subject } from 'rxjs';
import { switchMap, takeUntil, catchError } from 'rxjs/operators';

private fetchData$: Observable<string> = this.myservice.checkdata();
private refreshInterval$: Observable<string> = timer(0, 1000)
.pipe(
  // This kills the request if the user closes the component 
  takeUntil(this.killTrigger),
  // switchMap cancels the last request, if no response have been received since last tick
  switchMap(() => this.fetchData$),
  // catchError handles http throws 
  catchError(error => of('Error'))
);

任何幫助都感激不盡。謝謝。