Goo*_*bot 49 javascript jquery setinterval
简单来说 setInterval
setInterval(function() {
// Do something every 9 seconds
}, 9000);
Run Code Online (Sandbox Code Playgroud)
第一个动作将在9秒后发生(t=9s).如何强制循环立即执行第一个动作(t=0)?
我认为这是由于setInterval有Delay - Action - Delay - Action ...循环的机制; 而不是Action - Delay - Action - Delay ...循环.
编辑:我的功能确实是一个循环
setInterval(function(){
$('.test').each(function(idx){
var duration = 1000;
$(this).delay(duration*idx);
Some stuff here
});
}, 4000);
Run Code Online (Sandbox Code Playgroud)
Sal*_*n A 113
把事情简单化.您可以使用命名函数而不是匿名函数; 调用它并为其设置间隔.
function doSomething() {
console.log("tick");
}
doSomething();
setInterval(doSomething, 9000);
Run Code Online (Sandbox Code Playgroud)
必要时创建范围:
(function() {
function doSomething() {
console.log("tick");
}
doSomething();
setInterval(doSomething, 9000);
})();
Run Code Online (Sandbox Code Playgroud)
最后,以下工作无需创建或影响x:
setInterval(function x() {
console.log("tick");
return x;
}(), 9000);
Run Code Online (Sandbox Code Playgroud)
ale*_*lex 20
有时我使用这种模式......
(function me() {
// Do something every 9 seconds
setTimeout(me, 9000);
})();
Run Code Online (Sandbox Code Playgroud)
它并不完全相同,因为它会等到执行某些操作然后等待~9秒再次调用它.但是,这通常很有用,因此事件队列上的事件不会不必要地堆叠(但不太可能是某些代码需要9秒才能运行:)
请注意,在较旧的IE中,me将泄漏到外部范围.
Ric*_*ard 17
setInterval()是一个非常难看的函数.我使用这个清理版本,它会立即调用该函数,并在几秒钟内花费时间,在函数参数之前,因此使用内联函数定义调用它实际上看起来很合理.
function startInterval(seconds, callback) {
callback();
return setInterval(callback, seconds * 1000);
}
Run Code Online (Sandbox Code Playgroud)
使用命名函数并调用它并将其分配给间隔。
var myFnc = function() {
// Do something every 9 seconds
};
setInterval(myFnc, 9000);
myFnc();
Run Code Online (Sandbox Code Playgroud)
另一种选择是使用 setTimeout 代替。
var myFnc = function() {
// Do something every 9 seconds
setTimeout(myFnc, 9000);
};
myFnc();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
49857 次 |
| 最近记录: |