首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将滴答器设置为使用setTimeout而不是setInterval

将滴答器设置为使用setTimeout而不是setInterval
EN

Stack Overflow用户
提问于 2016-06-21 18:29:04
回答 4查看 3.7K关注 0票数 0

我读到setTimeoutsetInterval更少占用cpu资源。这是我切换到setTimeout的主要原因。

这是我的代码,它运行的非常好,但我不知道如何使它与setTimeout而不是setInterval一起工作。

代码语言:javascript
运行
复制
function tick() {
  $('#ticker li:first').slideUp(1000, function() {
    $(this).appendTo($('#ticker')).slideDown(1000);
  });
}
setInterval(function() {
  tick()
}, 9000);
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-06-21 18:39:57

若要将setInterval替换为setTimeout,请更改以下内容:

代码语言:javascript
运行
复制
setInterval(function() {
  tick()
}, 9000);

至:

代码语言:javascript
运行
复制
setTimeout(function repeat() {
  tick();
  setTimeout(repeat, 9000);
}, 9000);

但是,以这种重复方式使用的setTimeout不会占用更少的资源。相反,由于您必须反复调用setTimeout,因此与原始代码相比,会增加一些额外的开销。

票数 4
EN

Stack Overflow用户

发布于 2016-06-21 18:38:05

当您想要使用setTimeout()-function时,您必须递归地调用您的函数(使用inital调用onload或其他什么):

代码语言:javascript
运行
复制
function tick()
{
    $('#ticker').append('<span>tick</span>');
    setTimeout(tick, 1000);
}
tick();
代码语言:javascript
运行
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="ticker">

</div>

票数 1
EN

Stack Overflow用户

发布于 2016-06-21 18:33:09

代码语言:javascript
运行
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37951980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档