定时器和onChange

时间:2015-06-24 07:24:36

标签: javascript jquery timer settimeout

我需要谨慎运行more ...函数,因为它每次都会下载一个大图像,所以为了跳过意外的更改,我正在检查值是否有已更改 goTo()某个时间已过去(2000毫秒)。

and

..这有效,但跳过它应该进行的更改,它仍然运行scrubber.onValueChanged = function (value) { var timer; if (gallery.getCurrentIndex() !== value) { console.log('value changed'); clearTimeout(timer); console.log('timer reset'); } timer = setTimeout(function() { console.log('updating...'); gallery.goTo(value); }, 2000); }; 函数,用于我从中移动到中间的所有值。

1 个答案:

答案 0 :(得分:3)

timer是一个局部变量。因此,每次调用该函数时,timer都将被重置,clearTimeout(timer)无法按预期工作。要在行为范围之外修复该timer变量,或将其变为全局变量。

var timer;
....
scrubber.onValueChanged = function (value) {
    if (gallery.getCurrentIndex() !== value) {
        console.log('value changed');
        clearTimeout(timer); console.log('timer reset');
        timer = setTimeout(function() {
          console.log('updating...');
          gallery.goTo(value);
        }, 2000);
    }

};