1. ホーム
  2. javascript

JavascriptのsetInterval関数が自身をクリアする?

2023-07-28 18:07:33

質問

myInterval = setInterval(function(){
     MyFunction();
},50);

function MyFunction()
{
    //Can I call clearInterval(myInterval); in here?
}

インターバルが止まっていない(クリアされていない)ので、もし私が上記のコード化したものが問題ないなら、問題の原因となっている他のものを探すのに役立ちます。ありがとうございます。

EDIT: clearIntervalが呼ばれる前にいくつかの間隔を完了すると仮定して、setTimeoutの必要性を取り除きます。

どのように解決するのですか?

保存されたスコープがある限り interval 変数へのスコープがある限り、どこからでもキャンセルすることができます。

"child"スコープで。

var myInterval = setInterval(function(){
     clearInterval(myInterval);
},50);

"sibling"スコープで。

var myInterval = setInterval(function(){
     foo();
},50);

var foo = function () {
    clearInterval(myInterval);
};

スコープ外に出てしまうのであれば、間隔をパスすることもできます。

var someScope = function () {
    var myInterval = setInterval(function(){
        foo(myInterval);
    },50);
};

var foo = function (myInterval) {
    clearInterval(myInterval);
};