1. ホーム
  2. javascript

[解決済み] 関数内でこのsetIntervalをクリアするにはどうしたらいいですか?

2022-04-24 13:53:24

質問

通常、間隔を変数にセットして、次のようにクリアします。 var the_int = setInterval(); clearInterval(the_int); しかし、このコードを動作させるために、私はそれを無名関数に入れました。

function intervalTrigger() {
  setInterval(function() {
    if (timedCount >= markers.length) {
      timedCount = 0;
    }

    google.maps.event.trigger(markers[timedCount], "click");
    timedCount++;
  }, 5000);
};

intervalTrigger();

これをクリアするにはどうしたらいいのでしょうか?試しに var test = intervalTrigger(); clearInterval(test); を念のため確認しましたが、うまくいきませんでした。

基本的には、Google Mapがクリックされた時点で、このトリガーを停止させる必要があります。

google.maps.event.addListener(map, "click", function() {
  //stop timer
});

解決方法は?

その setInterval メソッドは、インターバルをクリアするために使用できるハンドルを返します。もし関数がそれを返すことを望むなら、メソッド呼び出しの結果を返すだけです。

function intervalTrigger() {
  return window.setInterval( function() {
    if (timedCount >= markers.length) {
       timedCount = 0;
    }
    google.maps.event.trigger(markers[timedCount], "click");
    timedCount++;
  }, 5000 );
};
var id = intervalTrigger();

そして、インターバルをクリアすること。

window.clearInterval(id);