Javascript 如何使用JQuery添加延迟?(让其等待5秒后继续)
具体而言:Javascript 如何使用JQuery添加延迟?(让其等待5秒后继续),javascript,Javascript,具体而言: 我有一个代码需要在5秒后运行 该代码位于函数内部 该函数被已在setTimeout()中的其他函数多次调用 发生的事情是,它第一次运行正常。。。但在接下来的跑步中,它不会等待那5秒 代码如下所示: //==================== create variables: ==================== var x = 0; //==================== create functions: ==================== funct
- 我有一个代码需要在5秒后运行
- 该代码位于函数内部
- 该函数被已在setTimeout()中的其他函数多次调用
//==================== create variables: ====================
var x = 0;
//==================== create functions: ====================
function wait5s() {
setTimeout(function() {
alert("alert # " + x + "\nNext alert will pop up in 5 seconds now!");
}, 5000);
x++;
}
function repeat5times(){
while (x<5) {
wait5s()
}
}
//==================== run this: ====================
alert("Click Ok and Wait 10 seconds for next alert!");
setTimeout(function() {
repeat5times();
}, 5000);
/============================创建变量:====================
var x=0;
//===============================创建函数:====================
函数wait5s(){
setTimeout(函数(){
警报(“警报”#“+x+”\n下一个警报将在5秒后弹出!”;
}, 5000);
x++;
}
函数重复5次(){
而(x问题在于该代码:
function repeat5times(){
while (x<5) {
wait5s()
}
}
下面是另一个使用setInterval
的方法:
function repeat5times() {
var cntr = 0;
var timer = setInterval(function() {
console.log("alert # " + x + "\nNext alert will pop up in 5 seconds now!");
++cntr;
if (cntr >= 5) {
clearInterval(timer);
}
}, 5000);
}
下面是一个使用变量设置超时的方法:
function waitNs(sec) {
setTimeout(function() {
console.log("alert # " + x + "\nNext alert will pop up in 5 seconds now!");
}, sec * 1000);
}
function repeat5times() {
for (var i = 1; i <= 5; i++) {
waitNs(i * 5);
}
}
函数等待(秒){
setTimeout(函数(){
log(“警报#“+x+”\n下一个警报将在5秒后弹出!”);
},第1000节);
}
函数重复5次(){
for(var i=1;isetTimeout
是一个异步函数,它不会阻止wait5s方法调用。
因此,您会一次又一次地将超时设置为5次,这会将警报调用函数放入超时队列中,以便在5秒后立即逐个调用
您需要的是,在调用第一个超时函数后调用next wait5s
function wait5s(callback) {
setTimeout(function () {
alert("alert # " + x + "\nNext alert will pop up in 5 seconds now!");
x++;
if(callback){
callback();
}
}, 5000);
}
function repeat5times() {
var callback = function () {
if (x < 5) {
wait5s(callback);
}
};
wait5s(callback);
}
函数wait5s(回调){
setTimeout(函数(){
警报(“警报”#“+x+”\n下一个警报将在5秒后弹出!”;
x++;
如果(回调){
回调();
}
}, 5000);
}
函数重复5次(){
var callback=函数(){
if(x<5){
wait5s(回调);
}
};
wait5s(回调);
}
如果您同时呼叫5个警报,请尝试此代码
var x = 0;
var t=0;
//==================== create functions: ====================
function wait5s() {
t+=5000;
setTimeout(function() {
alert("alert # " + x + "\nNext alert will pop up in 5 seconds now!");
},t);
x++;
}
function repeat5times(){
while (x<5) { wait5s() }
}
var x=0;
var t=0;
//===============================创建函数:====================
函数wait5s(){
t+=5000;
setTimeout(函数(){
警报(“警报”#“+x+”\n下一个警报将在5秒后弹出!”;
},t);
x++;
}
函数repeat5times(){
虽然(x您可以尝试此方法,但更简单地说,如果第一次调用应在5秒后执行,则第二次函数调用需要在10秒后执行。同样,第三次调用应在15秒后执行
//==================== create variables: ====================
var x = 1;
//==================== create functions: ====================
function wait5s(myVariable) {
setTimeout(function() {
alert("alert # " + x + "\nNext alert will pop up in 5 seconds now!");
}, myVariable * 5000);
}
function repeat5times(){
while (x<=5) {
wait5s(x)
x++;
}
}
/============================创建变量:====================
var x=1;
//===============================创建函数:====================
函数wait5s(myVariable){
setTimeout(函数(){
警报(“警报”#“+x+”\n下一个警报将在5秒后弹出!”;
},myVariable*5000);
}
函数重复5次(){
而(x似乎您真的在寻找而不是setTimeout
function myAlert() {
alert('Next alert in 5 secs');
}
var si = setInterval(myAlert, 5000)
用于停止计时器
您需要在设置超时
的函数中设置x,以便每5秒触发一次x++
您在x为5之前连续调用wait5s()
;连续调用它会启动5个setTimeOut函数,这就是为什么5秒后它们会一个接一个地弹出:
while (x<5) {
wait5s()
}
这就是为什么它没有按您预期的方式工作的原因
一种解决方案是在setTimeout
函数中的if语句中使用wait5s();
。谢谢,这就成功了……我仍然了解了它的逻辑,但它工作得很好!)你可以在网上阅读异步javascript编程。回调的使用很好&我回答得很慢,但如果可以的话,我使用var repeat5times=setTimeout//…
似乎(对我来说)优雅的捷径@JosEvora@mikakunsetTimeout返回计时器的句柄,该句柄是一个数字,而不是函数引用。因此,您的代码可能会给出错误。可能您的意思是分配传递给setTimeout的函数引用。不,我的意思是,我错了,我将它与setInterval混淆(使用全局清除间隔)这与jquery无关。它是简单明了的javascript。请从您的问题和标签中删除jquery。jquery很好,但确实如此。我想用jquery实现它……因为我不能用原始js实现……结果证明我的逻辑是错误的!谢谢您的评论(顺便说一句!)谢谢……我解决了这个问题,用if替换while,以摆脱它,并在每次需要它再次运行时调用该函数!;)
while (x<5) {
wait5s()
}
setTimeout(function() { alert("go after 5sec");}, 5000);
setTimeout(function() { alert("go after 5sec");}, 5000);
setTimeout(function() { alert("go after 5sec");}, 5000);
setTimeout(function() { alert("go after 5sec");}, 5000);
setTimeout(function() { alert("go after 5sec");}, 5000);