2017-04-19 7 views
3

間隔を.tsファイルに設定しようとしましたが、間隔内の同じファイル内で関数を使用する方法がわかりません。イオン2:間隔を設定する

説明するために:

マイ間隔の設定:同じTSファイルで

this.task = setInterval(function() { 
      this.refreshData(); 
     }, 300); 

そして、私の機能:

refreshData() : void{ 
     console.log('update...'); 
    } 

を、私は私のデバイス上で実行すると、私はこのエラーがあります:

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) 

私はこの方法を試みますが、私は動作しません:

this.task = setInterval(this.refreshData(), 300); 

これは私の関数を1回だけ呼び出します。

誰かがアイデアを持っていますか?

答えて

14

使用の矢印機能この

let self = this; 
this.task = setInterval(function() { 
    self.refreshData(); 
}, 300); 

またはbind

this.task = setInterval((function() { 
    this.refreshData(); 
}).bind(this), 300); 

を使用してのような

this.task = setInterval(() => { 
    this.refreshData(); 
}, 300); 

や店舗の文脈一つだけの関数呼び出しの場合:

this.task = setInterval(this.refreshData.bind(this), 300); 

あなたはこれを試してhttps://github.com/getify/You-Dont-Know-JS/blob/master/this%20%26%20object%20prototypes/ch1.md

+0

素敵な男!私に仕事! –

1

でこれについての詳細を学ぶことができました:

setInterval(this.refreshData, 300); 
1

私は私のアプリで、あなたのコードを貼り付けコピーします。

これが働いた:

this.task = setInterval(() => { 
    this.refreshData(); 
}, 300); 
1

を私は

​​

100%の作業の下に述べたようにあなたは、=>矢印でのsetInterval()を使用する必要があります。

+1

このコードは質問に答えるかもしれませんが、どのようにして問題を解決するか、そして/または理由を解決するための追加のコンテキストを提供すると、回答の長期的価値が向上します。 – Badacadabra

関連する問題