在X秒后触发javascript函数 - 有条件

时间:2010-07-03 22:59:27

标签: javascript jquery

我在页面上有一个基于jquery的滑块。此滑块调用函数以在每次值更改时更新变量并执行其他一些操作。这意味着在拖动滑块手柄时会过于频繁地调用该函数。这导致了性能问题。

当前的Psudo:

Slider.onSlide: trigger function ValueChange(V)
function ValueChange(V) {Variable=V; other code;};

我想仅在自上次更改后经过X个毫秒数(300)时才更改该值。这将大大提高性能。

这里的目的是减少滑动时触发ValueChange(V)的次数。只有时间延迟在这里不起作用,重要的是;

  1. 即使最后一个幻灯片位置在X秒数周期内,也始终设置滑块的最后一个值。 (虽然它可以在X秒后设置而不是立即设置)

  2. 该值更改为最新的滑块位置值,而不是之前的滑块位置值X秒数。

  3. 我认为需要一个中间函数,如果上面的两个检查通过,则调用ValueChange(V)。

  4. 我希望它有意义......真的需要帮助......这对我欠发达的大脑来说太复杂了......真的! :d

    提前致谢, 诺曼。

    P.S:由于我有可用的库,因此欢迎使用jQuery解决方案。

1 个答案:

答案 0 :(得分:1)

每次更改时将值存储在变量中,并使用一个间隔运行的函数来检查值是否已更改:

var currentValue, lastValue;

function ValueChange(V) {
  currentValue = V;
};

window.setInterval(function(){
  if (lastValue != currentValue) {
    lastValue = currentValue;
    Variable = currentValue; other code;
  }
}, 50);

我选择了50毫秒的间隔。因为这是动画制作动画的合理间隔。您可以尝试使用300毫秒的间隔,但这只会每秒更新三次,这可能看起来不稳定。