← エラー辞典に戻る

JavaScript

setInterval が止まらない

clearInterval を呼んでいない

こんな症状

setInterval で始めた処理が止まらない。タイマー処理を制御したいときに起きやすいよ。

まず試す

const id = setInterval(...) でIDを保存し、止めたいときに clearInterval(id) を呼ぶ。

js
const id = setInterval(() => update(), 1000);
// 止めたいときに
clearInterval(id);

これで直らなければ、下の「自分のケース」を確認。

🔍 自分のケースはどれ?

  • IDを変数に保存していない
    → const id = setInterval(...) でIDを受け取る。
  • clearInterval を呼んでいない
    → 停止タイミングで clearInterval(id) を呼ぶ。
  • ページ離脱・再描画で止めたい
    → アンマウント時やページ離脱時に clearInterval する。

なぜ起きる?

setIntervalの戻り値(タイマーID)を変数に保存していない、またはclearIntervalを呼んでいないよ。setIntervalは指定した間隔で永遠に実行し続けるから、明示的に停止しないと止まらないんだ。IDを保存しないとclearIntervalで指定できないよ。

✕ エラーが起きるコード
setInterval(() => update(), 1000);
// ID を保存していない
✓ 直したコード
const id = setInterval(() => update(), 1000);
clearInterval(id);

✅ 直ったか確認

clearInterval 後に処理が止まればOK。

🆘 まだ直らないときは

毎回 setInterval を呼んでタイマーが増殖していないかも確認しよう。setTimeout の再帰の方が制御しやすい場合もある。

Q&Aで質問する →

この解決法は役立ちましたか?

🔗 関連するエラー

📖 この問題を学べるレッスン

JavaScriptコース(基礎から)で根本から理解する →

✏️ 手を動かして練習

練習ドリル一覧で実際に書いて確認する →

📝 関連ブログ記事

📖 関連する用語

🚀 JavaScriptコースで基礎を学ぼう!

エラーの原因を根本から理解するには、基礎を体系的に学ぶのが近道です。完全無料・登録不要。

JavaScriptコースを始める →

❓ 関連するQ&A