有没有办法检查某个函数是否已使用javascript或jquery完成其操作?
我正在尝试使用setTimeout使计数器随着数字变大而减慢(减速输出,如果你愿意的话)。如您所知,数字越大,延迟时间越长(在setTimeout中)。
我要做的是单击一个按钮,然后在屏幕上打印当前循环迭代。这个循环数被用作setTimeout延迟,所以当数字很低时它将迅速冲过去,因为它越大,延迟就越大,从而使得打印数字更慢(因为这个数字是延迟,延迟越大)它打印的次数越少)。
Here is the logic I'm trying to accomplish
1. Click button
2. Initiate loop
3. trigger function to set timeout
4. set timeout triggers a function to print the loop iteration #
5. Repeat step 3 until the number of set iterations is completed
好吧,正如您可以看到设置超时的时间,循环将继续,但会有超时延迟。有什么办法可以让一个暂停类型的函数等到超时函数完成,然后继续下一次迭代?
这是我的代码
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
</head>
<body>
<form>
<input type="button" value="Display alert box"
onclick="setMessage()" />
<script>
function setMessage(){
for(i=0;i<5000;i++){
var b = i;
timeMsg();
//some sort of puase here checking until timeMsg & docWrite are completed, then continue to the next iteration
}
}
function timeMsg(){
var t=setTimeout("docWrite()",b);
}
function docWrite(){
document.write(i);
}
</script>
</form>
</body>
</html>
答案 0 :(得分:2)
我建议不要在for循环中执行此操作,而是建议执行以下操作:
function docWrite(i){
document.write(i);
}
function timeMsg(counter) {
var t;
counter++;
if (counter < 5000) {
t = setTimeout(function(counter){
docWrite(counter);
timeMsg(counter);
}, counter, counter)
}
}
timeMsg(0);