window.setInterval()メソッドに問題があります。以下は、構造の例ですが、メソッド "repeat"は繰り返し呼び出されますが、 "repeat"内のメソッドを呼び出すことはできません。この例では、マネージャ(m = new manager())をインスタンス化すると、 "Before Print"が印刷されますが、printStuffメソッドまたは "After Print"メッセージからログは出力されません。typescript window.setInterval()が正しく動作しない
これはなぜ起こっているのですか?私の実際のコードは "repeat"関数で多くの関数を呼び出す必要がありますが、別の関数への呼び出しを検出すると実行を停止します。
class manager{
constructor(){
window.setInterval(this.repeat, 5000);
}
repeat(){
console.log("Before Print");
this.printStuff();
console.log("After Print");
}
printStuff(){
console.log("Print Stuff");
}
てみてくださいを用いた方法に必要なコンテキストの外にthis.repeatを取る取るセット'setInterval(this.repeat.bind(this)、5000)' - コンソールでエラーメッセージをチェックしましたか?私は 'printStuff'が未定義であることを期待しています。なぜなら、' this'はあなたの考え方ではないからです... – nnnnnn
この質問は100回尋ねられました。より強く検索してください。あなたは「これ」がどのように働くかを読んでしまうことができます。 –
http://stackoverflow.com/questions/37802436/why-does-method-on-object-loose-correct-this-binding-in-settimeoutも参照してください。 –