我读到setTimeout
比setInterval
更少占用cpu资源。这是我切换到setTimeout
的主要原因。
这是我的代码,它运行的非常好,但我不知道如何使它与setTimeout
而不是setInterval
一起工作。
function tick() {
$('#ticker li:first').slideUp(1000, function() {
$(this).appendTo($('#ticker')).slideDown(1000);
});
}
setInterval(function() {
tick()
}, 9000);
发布于 2016-06-21 18:39:57
若要将setInterval
替换为setTimeout
,请更改以下内容:
setInterval(function() {
tick()
}, 9000);
至:
setTimeout(function repeat() {
tick();
setTimeout(repeat, 9000);
}, 9000);
但是,以这种重复方式使用的setTimeout
不会占用更少的资源。相反,由于您必须反复调用setTimeout
,因此与原始代码相比,会增加一些额外的开销。
发布于 2016-06-21 18:38:05
当您想要使用setTimeout()
-function时,您必须递归地调用您的函数(使用inital调用onload或其他什么):
function tick()
{
$('#ticker').append('<span>tick</span>');
setTimeout(tick, 1000);
}
tick();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="ticker">
</div>
发布于 2016-06-21 18:33:09
var ticksCount = 0;
function tick() {
$('#ticker li:first').slideUp(1000, function() {
$(this).appendTo($('#ticker')).slideDown(1000);
});
}
var t = setInterval(function() {
tick()
if (ticksCount > 10) {
clearInterval(t);
}
}, 1000);
这里有一个很棒的教程,可以帮助您:
timing.asp
https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setInterval
https://stackoverflow.com/questions/37951980
复制相似问题