首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >for循环中setTimeout()的setTimeout()

for循环中setTimeout()的setTimeout()
EN

Stack Overflow用户
提问于 2014-08-14 15:28:17
回答 1查看 3.5K关注 0票数 5

clearTimeout()for循环中不起作用

代码语言:javascript
复制
for(i=0;i<10;i++){
    myVar = setTimeout(function(){
        alert("Hello")
    }, 3000);
}

小提琴:not working

小提琴:working

请帮助我阻止setTimeout()在第一次飞行。

EN

回答 1

Stack Overflow用户

发布于 2014-08-14 15:30:42

您必须保留对循环中创建的每个超时的引用,然后迭代和清除每个超时,否则您只是用一个新的超时覆盖myVar,而不清除前面的超时,并且在执行过程中丢失引用等等。

代码语言:javascript
复制
$(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);
        });
    }
});

FIDDLE

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25311892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档