美文网首页
JS中如何解决for循环中的延迟执行问题

JS中如何解决for循环中的延迟执行问题

作者: 宇落星辰_30ba | 来源:发表于2019-05-25 21:43 被阅读0次

    我们先来看一个例子
    在JS方法里面设置一个for循环,输出每次循环的值,如下图

    for (var i = 0; i < 5; i++) {
        setTimeout(function(){
            console.log(i)
        },1000);
    }
    
    image.png

    我们可以根据闭包的知识来更改一下for循环中的逻辑,利用闭包将i的值传递给a

    for (var i = 0; i < 5; i++) {
        (function(a){
            setTimeout(function(){
                console.log(a)
            },1000);
        }(i))
    }
    

    这次在运行程序我们就可以看到输出内容是0开始输出了


    image.png
    JS中刚刚的写法还可以按照下面的方式实现
    for (var i = 0; i < 5; i++) {  
      setTimeout(fn(i),1000);  
    }
    function fn(a){
        return function(){
            console.log(a);
        }
    }
    

    结果如下图


    image.png

    JS中如果for循环中有异步方法,就需要用闭包的方式保留当前循环变量值

    相关文章

      网友评论

          本文标题:JS中如何解决for循环中的延迟执行问题

          本文链接:https://www.haomeiwen.com/subject/fffttctx.html