発生する前にwindow.setTimeout()をキャンセル/キルする


194

たとえば、ステータスをクリアするために以下の行を使用する場所がいくつかあります。私はこれらのいくつかを10秒以上ハングアウトしており、ユーザーがアクションの周りをクリックすると、誤った時間間隔で発生する可能性があります。

window.setTimeout(function() { removeStatusIndicator(); }, statusTimeout);

いくつかのjQueryまたはJavaScriptコードを使用してこれをキャンセルまたは強制終了することは可能ですか?このプロセスが滞っていないのですか?

回答:


374
var timer1 = setTimeout(function() { removeStatusIndicator(); }, statusTimeout);

clearTimeout(timer1)

101
windowは単なるグローバル名前空間の名前であるため、(setTimeoutまたはclearTimeoutのどちらの場合も)本当に必要なわけではありません。
Matthew Crumley、

7
setTimeoutの最初のパラメーターは関数であり、 'removeStatusIndicator()'は関数なので、次のように簡単に実行することでパフォーマンスを向上させることができます(少ないタイプ):var timer1 = setTimeout(removeStatusIndicator、statusTimeout); これにより、ネストされた関数呼び出しが回避されます。
HarleyDave 2014

5
そしてwindow.clearTimeout(timer1)Node.js.では動作しません どちらか一方だけを使用clearTimeout(timer1)またはglobal.clearTimeout(timer1)
CL22

2
@ user1944491二重呼び出しはありません。@ HarleyDaveがsetTimeout(removeStatusIndicator, ...)、つまり関数removeStatusIndicatorが呼び出されないことに注意してください。
Frerich Raabe

3
@ user1944491が言っていることを無視してください-それは間違っています。setTimeoutに渡された関数は2回呼び出されません。Chromeは可能性が高いあなたが関数を呼び出すことによって台無しに、その動作を変更していないsetTimeout( func(), 0 )のではなくsetTimeout( func, 0 )
セティ

2

window.clearTimeout()は、達成しようとしていることを実行する必要があります。


6
あなたの答えを説明し、いくつかの例を挙げてください。良い答えは常に行われていたもの、それはOPのためではなく、SOに、将来の訪問者のためだけではなく、そのようなAの方法で行われた理由の説明があります。
B001ᛦ2016

4
+1は、上のコメントがまったく無関係でランダムに見えるためです。答えはまったく問題なく、後で投稿されただけなので、すでに提供されている答えの「コピーと貼り付け」に似ています。
2018
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.