gpt4 book ai didi

javascript - 暂停,直到使用 jquery 或 javascript 完成事件/函数

转载 作者:行者123 更新时间:2023-12-02 19:40:24 26 4
gpt4 key购买 nike

有没有办法使用 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>

最佳答案

我建议不要在 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);

关于javascript - 暂停,直到使用 jquery 或 javascript 完成事件/函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10454586/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com