首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript中的setTimeout

Javascript中的setTimeout
EN

Stack Overflow用户
提问于 2011-07-27 04:55:28
回答 2查看 269关注 0票数 1

我使用以下代码在javascript中对一些进程进行动画处理:

代码语言:javascript
复制
  var direction = $('#rightControl');
  function animate()
  {
      if (hover) return;

      if (!direction.is(':visible'))
      {
          if (direction.attr('id') == 'rightControl') direction = $('#leftControl');
          else direction = $('#rightControl');
      }

      doMove(direction);
  }

  // Animate slider!
  setInterval(animate, 2500);

直到页面上存在元素div :每隔2.5秒调用一次animate()函数并移动我的#rightControl (在doMove中)。当#rightControl消失时,我将方向改为#leftControl,...

一切都很酷,但当页面在后台出现几分钟(例如4-5分钟)时,动画就会变得疯狂,并调用每个100-200ms。怎么了?

EN

回答 2

Stack Overflow用户

发布于 2011-07-27 05:03:28

我可以猜测的是,要么是setInterval()在别处被意外调用,要么是animate()被调用。

试试这个小提琴:http://jsfiddle.net/fXJbW/它只适用于animate()setInterval()。问题出在代码的其余部分。

你可以做的另一件事是:

代码语言:javascript
复制
var timeout;

function animate()
{
    // do stuff here
    clearTimeout(timeout);
    timeout=setTimeout(animate,2500);
}
票数 0
EN

Stack Overflow用户

发布于 2011-07-27 05:05:55

嗯,setInterval只是每*秒向调用堆栈添加一些东西。如果有一些javascript被执行了几秒钟,事情可能会在调用堆栈上堆积起来。我猜,如果页面也在后台,就可能发生这种情况。检查它是否能与setTimeouts一起工作(SO1或函数调用来启动它,在函数的末尾使用1)。

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

https://stackoverflow.com/questions/6836497

复制
相关文章

相似问题

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