J'essaie de trouver l'équivalent du $interval
d'AngularJS dans Angular 5.
$interval
répétera un appel de fonction ou un bloc un nombre spécifié de fois avec un délai intermédiaire. Voici ce que je voudrais faire, écrit en AngularJS:
$interval(function() {
myFunction(param1, param2)
i++;
}, delay, count);
Faites abstraction de i, je l'utilise dans un but différent. Comment cela peut-il être réalisé dans Angular 5? J'ai déjà essayé d'utiliser rxjs/Observable mais je n'arrive pas à trouver un moyen d'inclure à la fois le retard et la course) partie plusieurs fois.
Merci.
Vous pouvez utiliser la méthode statique timer
et l'opérateur take
.
import (timer} from 'rxjs';
import {take} from 'rxjs/operators';
timer(yourDelay, 1000).pipe(
take(yourCount)).subscribe(x=>{
// do here whatever you want to do
})
Je suppose que vous utilisez RxJS 6.
Vous pouvez utiliser interval
avec take
pour contrôler le nombre de fois que vous souhaitez appeler votre fonction.
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/interval';
const delay = 1000; // every 1 sec
const count = 5; // process it 5 times
Observable.interval(delay).take(count).subscribe(() => {
myFunction(param1, param2);
});
Vous pouvez utiliser l'intervalle de rxjs
import { interval } from 'rxjs/observable/interval';
//emit value in sequence every 1 second
const source = interval(1000);
//output: 0,1,2,3,4,5....
const subscribe = source.subscribe(val => console.log(val));
Cela émettra une nouvelle valeur toutes les 1 seconde
Vous pouvez consulter this tutorial pour votre requête. son fonctionne bien en Angular 5 aussi .. Je l'ai essayé et son donné ici de manière simple.
import { Observable } from “rxjs”;
import { IntervalObservable } from “rxjs/observable/IntervalObservable”;
import { TimerObservable } from “rxjs/observable/TimerObservable”;
import “rxjs/add/operator/takeWhile”;
Declare variable in class
export class MyComponent implements OnInit {
private alive: boolean;
}
In ngOnInit() function use below code to call service after particular interval of time
ngOnInit() {
IntervalObservable.create(10000) .takeWhile(() => this.alive)
// only fires when component is alive
.subscribe(() => { this.yourService.getDataList()
.subscribe(data => { this.agentData = data.json().result; console.log(this.agentData); });
});
}