2017-10-14 1 views
1

Je voudrais exécuter une fonction toutes les 1 seconde. Après la recherche, j'ai trouvé setInterval mais cela ne fonctionne pas pour moi.setInterval dans IONIC 3

setInterval(function(){ 
    this.myfuntion(); 

}, 1000); 

J'ai aussi essayé this.myfuntion mais ça ne marche pas trop.

Répondre

0

essayez ceci. Je pense que c'est une question de portée. sans lier la portée de setInterval va à l'objet fenêtre

 setInterval(function(){ this.myfunction();}.bind(this), 1000); 
3

La solution est d'utiliser Arrow functions:

setInterval(() => { 
    this.myfuntion(); // Now the "this" still references the component 
}, 1000); 

Lorsque vous utilisez fonctions fléchées, la propriété this ne sont pas remplacées et encore des références l'instance du composant.

1

Il existe essentiellement deux méthodes pour effectuer cela. Essayez d'utiliser l'observable qui conviendra le mieux à vos besoins.

Méthode 1:

import {Observable} from 'Rxjs/rx'; 
import { Subscription } from "rxjs/Subscription"; 

// if you want your code to work everytime even though you leave the page 
Observable.interval(1000).subscribe(()=>{ 
    this.functionYouWantToCall(); 
}); 

Méthode 2:

// if you want your code to work only for this page 
//define this before constructor 
observableVar: Subscription; 

this.observableVar = Observable.interval(1000).subscribe(()=>{ 
    this.functionYouWantToCall(); 
}); 

ionViewDidLeave(){ 
    this.observableVar.unsubscribe(); 
}