2017-08-10 7 views
1

を実行し、すべての3分のsetTimeoutは、ボタン上に複数回

intervalId = setTimeout(function(){ searchSiteDetailViaAjax() }, 180000); 

と停止ボタンの後、私はいくつかの時間のためにそれが正常に動作しますが、その後の後に最初にこの

clearTimeout(intervalId); 
intervalId = null; 

を停止しています、私はAjaxの機能を呼び出していますクリックしてくださいclearTimeoutを実行すると、タイマーは何度もAjax関数を呼び出します。

+0

ここに情報が不十分です。 'intervalId'をどの範囲で定義していますか?コードを追加してください。 –

+0

詳細情報を投稿できますか?コードサンプル? –

+0

intervalIdのスコープはグローバルです。 –

答えて

2

setInterval()clearInterval()で作業したいと思うようです。 setTimeout()は1回だけ実行され、3分ごとに実行するとしたら、setInterval()を使用します。

のsetInterval MDN:https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setInterval

てclearInterval MDN:あなたが前にあなたのsetTimeoutコールに、クリック時にclearTimeout(intervalId);を呼び出す必要がありようhttps://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/clearInterval

0

が鳴ります。

実行される関数をキューに入れ、もう一度ボタンをクリックすると別の実行をキューに入れ、別のハンドルを受け取るということが起こっているようです。停止ボタンをクリックすると、複数の実行を引き起こす以前のハンドルをクリアすることができなくなります。

+0

トーンありがとう。その期待どおりの動作。 –

+0

よく私の小道具を私に与えることを忘れないでください!ハハ。お役に立てて嬉しいです –

関連する問題