Mr.*_*1.0 46 javascript settimeout
我试图setTimeout
每10秒重复一次.我知道setTimeout
默认只等待然后执行一次动作.我该如何重复这个过程?
setTimeout(function() {
setTimeout(function() {
console.log("10 seconds");
}, 10000);
}, 10000);
Run Code Online (Sandbox Code Playgroud)
uzy*_*zyn 74
也许你应该使用 setInterval()
nnn*_*nnn 43
setInterval()
可能是你正在寻找的东西,但是如果你想做的话也能得到同样的效果setTimeout()
:
function doSomething() {
console.log("10 seconds");
setTimeout(doSomething, 10000);
}
setTimeout(doSomething, 10000);
Run Code Online (Sandbox Code Playgroud)
或者,如果您不想声明单独的函数并希望坚持使用函数表达式,则需要使其成为命名函数表达式:
setTimeout(function doSomething() {
console.log("10 seconds");
setTimeout(doSomething, 10000);
}, 10000);
Run Code Online (Sandbox Code Playgroud)
(如果您不介意使用已弃用的语言功能,请使用arguments.callee.)
Rik*_*kar 18
根据我的说法,setInterval()是你的最佳方式.
这是一些代码:
setInterval(function() {
//your code
}, 10000);
// you can change your delay by changing this value "10000".
Run Code Online (Sandbox Code Playgroud)
Aad*_*hah 16
与@nnnnnn和@uzyn提供的答案不同,我不鼓励你利用setInterval
以下答案中阐述的原因.而是使用以下Delta Timing脚本:
function DeltaTimer(render, interval) {
var timeout;
var lastTime;
this.start = start;
this.stop = stop;
function start() {
timeout = setTimeout(loop, 0);
lastTime = + new Date;
return lastTime;
}
function stop() {
clearTimeout(timeout);
return lastTime;
}
function loop() {
var thisTime = + new Date;
var deltaTime = thisTime - lastTime;
var delay = Math.max(interval - deltaTime, 0);
timeout = setTimeout(loop, delay);
lastTime = thisTime + delay;
render(thisTime);
}
}
Run Code Online (Sandbox Code Playgroud)
上面的脚本render
尽可能接近指定的函数运行给定的函数interval
,并回答你setTimeout
用来重复一个过程的问题.在您的情况下,您可以执行以下操作:
var timer = new DeltaTimer(function (time) {
console.log("10 seconds");
}, 10000);
var start = timer.start();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
67733 次 |
最近记录: |