2017-10-14 6 views
1

Ich möchte eine Funktion alle 1 Sekunde ausführen. Nach der Suche fand ich setInterval, aber es funktioniert nicht für mich.setInterval in IONIC 3

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

}, 1000); 

Ich habe auch versucht this.myfuntion aber es auch nicht funktioniert.

Antwort

0

versuchen dies. Ich denke, es ist ein Problembereich. ohne Bindung den Umfang in setInterval geht zum Fenster Objekt

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

Die Lösung Arrow functions zu verwenden ist:

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

Bei der Verwendung von Pfeil Funktionen, die this Eigenschaft nicht überschrieben und noch Referenzen die Komponenteninstanz.

1

Es gibt grundsätzlich zwei Methoden, um das durchzuführen.

Versuchen Sie mit Observable, die am besten Ihren Anforderungen entsprechen.

Methode 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(); 
}); 

Methode 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(); 
}