javascript setInterval嵌套 外层等待内层结束再执行

xiaomingtt 发布于 2018/04/20 09:54
阅读 382
收藏 0

<input id="test" style="width:100%;">
<script>
    var a=[1,2,3,4,5];
    var b=['a','b','c','d','e'];
    var div=document.getElementById("test");
    var i=0;
    var yan=setInterval(function(){
        var s=div.value;
        div.value= s + a[i];
        var j=0;
        var shi=setInterval(function(){
            var s=div.value;
            div.value= s + b[j];
            j++;
            if(j>=b.length){clearInterval(shi);}
        },500);
        i++;
        if(i>=a.length){clearInterval(yan);}
    },500);
</script>

上面代码运行结果是为:12a3ab4abc5bcadcdbaedecbedcede,希望得到的结果是:1abcde2abcde3abcde4abcde5abcde 。代码应该怎么写?谢谢!

加载中
0
x
xiaomingtt

<input id="test" style="width:100%;">
<script>
    var a=[1,2,3,4,5];
    var b=['a','b','c','d','e'];
    var div=document.getElementById("test");
    var i=0,j=0;
    function outer(){
        if(i<a.length){
            div.value+=a[i++];
            inner();
        }
    }
    function inner(){
        if(j<b.length){
            setTimeout(function(){
                div.value+=b[j++];
                inner();
            },500)
        }else{
            j=0;
            setTimeout(outer,500);
        }
    }
    outer();
</script>

返回顶部
顶部