我希望仅在时间过期后执行console.log();
,然后重复,但不会在页面加载后立即执行。这是如何完成的?
function setTimer(t) {
(function timeout() {
console.log('timer '+t+' seconds')
setTimeout(timeout, t*1000);
})();
}
setTimer(5);
setTimer(10);
setTimer(15);
setTimer(20);
答案 0 :(得分:1)
仅使用 setInterval :
您可以使用 setInterval ,它会在预定义的时间段内反复执行。以下示例将打印“Hello there'每一秒。
var myID = setInterval(function(){
console.log('Hello there');
},1000);
要停止setInterval,您需要使用以下内容:
clearInterval(myID);
仅使用 setTimeout :
您还可以使用 setTimeout 并调用将自行调用的函数。下面的例子将在1秒后执行 然后重复每一次打印" Hello There"在你的控制台中。
setTimeout(function(){
CallMyself();
},
// Set the Execution to take place exactly 1000 ms after it has been called.
1000);
function CallMyself(){
console.log('Hello There');
setTimeout(function(){
CallMyself();
},
// Set the period of each loop to be 1000 ms
1000);
}
使用两者合并:
您还可以合并 setInterval 和 setTimeOut 。下面的例子将开始打印" Hello There"每秒 1秒过后。
setTimeout(function(){
setInterval(function(){
console.log('Hello there');
},1000);
},1000);
将初始延迟和循环延迟作为参数的函数示例,以便您可以创建不同的计时器:
// First argument is the Delay in Execution.
// Second argument is the period it takes for each loop to be completed.
setCustomTimer(1 , 2);
setCustomTimer(2 , 4);
function setCustomTimer( initialDelay , LoopDelay ){
console.log('Initial Delay of ' + initialDelay + ' Seconds');
var myDelay = LoopDelay;
setTimeout(function(){
console.log('Initial Delay of ' + initialDelay + ' seconds is Over. Starting Loop. ');
CallMyself(myDelay);
},initialDelay * 1000);
}
function CallMyself(LoopDelay){
console.log('Loop every ' + LoopDelay + ' Seconds');
setTimeout(function(){
CallMyself(LoopDelay);
},LoopDelay * 1000);
}

答案 1 :(得分:0)
以下内容如何:
function MyLoop(t) {
setTimeout(function() {
console.log('Loop '+t+' seconds.')
MyLoop(t);
}, t * 1000);
}
MyLoop(5);
MyLoop(10);
MyLoop(15);
MyLoop(20);