私は、次のコードを見た:window.setTimeout(() => this.start(), 1000);
が無限ループを導入しないのはなぜ同じ関数のwindow.setTimeoutを呼び出しても無限ループが発生しないのはなぜですか?
class MasterControlPanel {
private sensors: Sensor[] = [];
constructor() {
// Instantiating the delegate HeatSensor
this.sensors.push(new HeatSensor(this));
}
start() {
for (var i= 0; i < this.sensors.length; i++) {
// Calling the delegate
this.sensors[i].check();
}
window.setTimeout(() => this.start(), 1000);
}
startAlarm(message: string) {
console.log('Alarm! ' + message);
}
}
var cp = new MasterControlPanel();
cp.start();
を?
私の理解に基づいて、cp.start()
は最初sensors
内の各sensor
を反復して、順番に1
秒の遅延後に再度start
を呼び出すwindow.setTimeout
を呼び出します。
参考:リスト3-3。 Pro TypeScriptの委任:アプリケーション規模のJavaScript開発
トピックを表示しない: '()=> this.start()'は何かが不思議です - 新しいJSシンタックスでなければなりません。 – Utkanos
これはラムダです。これはES6の新機能です。 – Amy
無限ループを導入しています。 iteratiionsの間にちょうど1秒です。 – Malk