J'essaie de définir un intervalle dans un fichier .ts mais je ne comprends pas comment utiliser une fonction dans le même fichier dans l'intervalle.
Expliquer :
Mon réglage d'intervalle:
this.task = setInterval(function () {
this.refreshData();
}, 300);
Et ma fonction dans le même fichier ts:
refreshData() : void{
console.log('update...');
}
Quand je cours sur mon appareil, j'ai cette erreur:
04-19 10:38:57.535 21374-21374/com.ionicframework.app722890 I/chromium: [INFO:CONSOLE(79432)] "TypeError: this.refreshData is not a function
at file:///Android_asset/www/build/main.js:10987:18
at t.invokeTask (file:///Android_asset/www/build/polyfills.js:3:10284)
at Object.onInvokeTask (file:///Android_asset/www/build/main.js:39626:37)
at t.invokeTask (file:///Android_asset/www/build/polyfills.js:3:10220)
at e.runTask (file:///Android_asset/www/build/polyfills.js:3:7637)
at invoke (file:///Android_asset/www/build/polyfills.js:3:11397)
at e.args.(anonymous function) (file:///Android_asset/www/build/polyfills.js:2:30193)", source: file:///Android_asset/www/build/main.js (79432)
J'essaie de cette façon mais je ne travaille pas:
this.task = setInterval(this.refreshData(), 300);
Cet appel ma fonction une seule fois.
Quelqu'un a une idée?
utiliser la fonction flèche
this.task = setInterval(() => {
this.refreshData();
}, 300);
ou stocker le contexte comme ça
let self = this;
this.task = setInterval(function () {
self.refreshData();
}, 300);
ou en utilisant bind
this.task = setInterval((function () {
this.refreshData();
}).bind(this), 300);
si une seule fonction appelle:
this.task = setInterval(this.refreshData.bind(this), 300);
vous pouvez en apprendre plus à ce sujet avec https://github.com/getify/You-Dont-Know-JS/blob/master/this%20%26%20object%20prototypes/ch1.md
essaye ça:
setInterval(this.refreshData, 300);
Je copie votre code collé dans mon application.
Cela a fonctionné:
this.task = setInterval( () => {
this.refreshData();
}, 300);
Vous devez utiliser setInterval () avec => arrow, comme je l'ai mentionné ci-dessous
setInterval(() => {
console.log('timer');
//you can call function here
},5000);
100% de travail.