js定时器如何在执行完成以后往下执行?

时间:2021-03-29 19:11:30
代码


<script>
function a() { 
            var i = 0; 
                if (i == 0) { 
                    alert(i); 
                  var tid=  setInterval(function() { 
                        ++i; 
                        alert(i); 
                        if (i > 10) { 
 clearTimeout(tid);
                           
                        } 
                    }, 100); 
                } 
        }
a();
alert("last..");
  </script>


本意是将定时器执行完成以后,最后再输出last。。可是结果不是这样。
我的last必须是要等定时器执行完成以后才能输出。不能放在定时器里面。有什么办法可以解决?

8 个解决方案

#1


不行吧,定时器好比一个循环语句只要满足条件,他会一直执行下去。

#2



<script>
function a() {
var i = 0;
var tid = setInterval(
function(){
++i; 
alert(i); 
if (i > 2) { 
clearTimeout(tid);
alert("last...");
}
}, 100); 
}
a();
</script>



IE6下测试成功。

#3


回2楼的,我的last必须是要等定时器执行完成以后才能输出。不能放在定时器里面。有什么办法可以解决。
这个办法我知道。。。我要的是在定时器外面执行。

#4


在clearTimeout()函数后面再调用一个函数不就行了嘛。
这个函数里面你就写alert("last...");就会在最后弹出来。

#5


现在有很多定时器,都是在满足一定条件以后才终止。所以不能在定时器里面做我要继续的任务。
4楼的,我应该说清楚了吧

#6


引用 4 楼 config_man 的回复:
在clearTimeout()函数后面再调用一个函数不就行了嘛。
这个函数里面你就写alert("last...");就会在最后弹出来。



就是这样的了

#7


快要崩溃了。为什么一而再,再而三的说,还是不明白呢?????????

#8


clearTimeout(tid);跳出再做alert("last..");????

<script>
function a() { 
            var i = 0; 
                if (i == 0) { 
                    alert(i); 
                  var tid=  setInterval(function() { 
                        ++i; 
                        alert(i); 
                        if (i > 10) { 
                         clearTimeout(tid);
                           
                        } 
                    }, 100); 
                } 
        }
        a();
function b(){
        alert("last..");
}
b();
  </script>

这样不行?
或者
<script>
var flag = false;
function a() { 
            var i = 0; 
                if (i == 0) { 
                    alert(i); 
                  var tid=  setInterval(function() { 
                        ++i; 
                        alert(i); 
                        if (i > 10) { 
                         clearTimeout(tid);
                          flag==true; 
                        } 
                    }, 100); 
                } 
        }
        a();
function b(){
    if(true==flag)
        alert("last..");
}
b();
  </script>

#1


不行吧,定时器好比一个循环语句只要满足条件,他会一直执行下去。

#2



<script>
function a() {
var i = 0;
var tid = setInterval(
function(){
++i; 
alert(i); 
if (i > 2) { 
clearTimeout(tid);
alert("last...");
}
}, 100); 
}
a();
</script>



IE6下测试成功。

#3


回2楼的,我的last必须是要等定时器执行完成以后才能输出。不能放在定时器里面。有什么办法可以解决。
这个办法我知道。。。我要的是在定时器外面执行。

#4


在clearTimeout()函数后面再调用一个函数不就行了嘛。
这个函数里面你就写alert("last...");就会在最后弹出来。

#5


现在有很多定时器,都是在满足一定条件以后才终止。所以不能在定时器里面做我要继续的任务。
4楼的,我应该说清楚了吧

#6


引用 4 楼 config_man 的回复:
在clearTimeout()函数后面再调用一个函数不就行了嘛。
这个函数里面你就写alert("last...");就会在最后弹出来。



就是这样的了

#7


快要崩溃了。为什么一而再,再而三的说,还是不明白呢?????????

#8


clearTimeout(tid);跳出再做alert("last..");????

<script>
function a() { 
            var i = 0; 
                if (i == 0) { 
                    alert(i); 
                  var tid=  setInterval(function() { 
                        ++i; 
                        alert(i); 
                        if (i > 10) { 
                         clearTimeout(tid);
                           
                        } 
                    }, 100); 
                } 
        }
        a();
function b(){
        alert("last..");
}
b();
  </script>

这样不行?
或者
<script>
var flag = false;
function a() { 
            var i = 0; 
                if (i == 0) { 
                    alert(i); 
                  var tid=  setInterval(function() { 
                        ++i; 
                        alert(i); 
                        if (i > 10) { 
                         clearTimeout(tid);
                          flag==true; 
                        } 
                    }, 100); 
                } 
        }
        a();
function b(){
    if(true==flag)
        alert("last..");
}
b();
  </script>