在for循环中调用setTimeout()的clearartimeout()

clearTimeout() for setTimeout() in for loop

本文关键字:clearartimeout setTimeout 调用 for 循环      更新时间:2023-09-26

clearTimeout()内部的for循环不工作

for(i=0;i<10;i++){
    myVar = setTimeout(function(){
        alert("Hello")
    }, 3000);
}

小提琴:不工作

小提琴:工作

请帮我停止setTimeout()在第一小提琴

你必须保持对循环中创建的每个超时的引用,然后迭代并清除每个超时,否则你只是用一个新的超时覆盖myVar而不清除前一个,并且在你去的时候失去引用等。

$(document).ready(function(){
    var myVar = []
    $("#myfunction").click(myFunction);
    $("#mystopfunction").click(myStopFunction);
    function myFunction() {
        for(i=0;i<10;i++){
            myVar.push(
                setTimeout(function(){
                    alert("Hello")
                }, 3000)
            );
        }
    }
    function myStopFunction() {
        myVar.forEach(function(timer) {
            clearTimeout(timer);
        });
    }
});

小提琴