J'implémente une fonctionnalité dans Angular2 qui nécessite l'utilisation de setTimeout
.
Mon code:
public ngAfterViewInit(): void {
this.authenticate_loop();
}
private authenticate_loop() {
setTimeout (() => {
console.log("Hello from setTimeout");
}, 500)
}
setTimeout
est démarré par ngAfterViewInit
mais la boucle n'est exécutée qu'une seule fois, par exemple. "Hello fromsetTimeout" n'est imprimé qu'une seule fois.
Question: Comment puis-je changer le code pour faire fonctionner setTimeout?
private authenticate_loop() {
setInterval (() => {
console.log("Hello from setInterval");
}, 500)
}
setTimeout
ne s'exécutera qu'une seule fois, sauf si vous créez un autre setTimeout
.
Edit: Donc, pour être plus précis pour les différentes versions angular:
Dans Angular2 vous n'êtes plus obligé d'utiliser $ timeout/$ interval. Donc, pour la question ici setInterval est la bonne solution.
Pour toute personne intéressée par la réponse originale (ciblée sur Angular1), lisez ce qui suit:
Utilisez $ interval dans une application angular.js.
Et si vous souhaitez utiliser setTimeout ailleurs dans une application angular.js, vous devriez mieux utiliser le service $ timeout .
$ timeout et $ interval ont l'avantage de garder votre portée mis à jour, contrairement à setTimeout/setInterval.