これは、関数を定期的に実行するための単純な機能です。これは基本的に、ネイティブ Window オブジェクトにあるネイティブの clearInterval/setInterval メカニズムをカプセル化します。これは、特定の間隔でユーザーと対話するために使用する場合に特に便利です。例: プロンプトまたは確認呼び出しを使用する): これにより、アクションを待機する複数のメッセージ ボックスが回避されます。ただし、このオブジェクトはメソッドを定期的に実行できますが、その内部で 1 回の呼び出しが行われるのを防ぐことができます。何らかの理由でメソッドが実行された後、再度次の呼び出しが行われるため、メソッドが 2 回続けて実行されることになります。上の 2 番目の英語の文はこれを意味します。
ヘルプ文書には、このオブジェクトがメソッド停止を 1 つだけ提供すると書かれていますが、私が調べたソース コードには、ある時点でトリガーされる必要があるイベント onTimerEvent も提供されています。しかし、ヘルプドキュメントには例がありません。
このオブジェクトのソース コードは比較的単純で、コメントなしでここに直接投稿されます:
コードをコピー
this.周波数 = 周波数;
this.registerCallback();
registerCallback: function() {
this.timer = setInterval (this.onTimerEvent .bind(this), this.frequency * 1000);
},
実行: function() {
this.callback(this); 🎜>
stop: function() {
if (!this.timer) return;
this.timer = null;
onTimerEvent : function() {
if (!this.currentlyExecuting) {
try {
this.currentlyExecuting = true;
this.execute(); ) {
/* try/finally をサポートしないクライアント用の空のキャッチ */
}
finally {
this.currentlyExecuting =
}
}
}
});
例を見てください:
コードをコピーします
コード
new PeriodicalExecuter(function(pe) {
if (!confirm('後でまた迷惑をかけますか?'))
pe.stop(); },
5);
// ユーザーが質問に答えるのに時間がかかりすぎる場合、そのようなメッセージのスタックは存在しないことに注意してください。 //