JS onscrollStop事件变得越来越慢

时间:2017-06-06 12:26:23

标签: javascript jquery google-chrome

我使用fllowing代码作为onscrollStop事件执行:

let timeoutId = null;
$(window).on('scroll', function () {
    if(timeoutId)clearTimeout(timeoutId);
    timeoutId = setTimeout(function () {
        console.log("ok!");
    }, 200);
});

问题是,当我在Chrome 58.0.3029.110(64位)上测试时," ok!"日志变得越来越慢(尝试滚动更多次,至少30次)。

即。有时它会在滚动结束时立即显示(200ms),但有时它会在滚动结束后显示很长时间(最长为1秒)。

然后我在Microsoft Edge,IE和Firefox上测试它,它运行得很好。

我注意到的另一件事是,这样的代码需要大量的CPU,当我在Microsoft Edge,IE和Firefox中测试时,我的CPU运行最多40%。但Chrome不会出现这种情况(如果你不能重现这一点,请尝试用更复杂的功能替换日志功能。)

所以我认为,Chrome的安全策略是阻止代码以预期的速度运行。

很明显,问题是代码太无效了。

是否有更有效的方法来实施scrollstop事件?

0 个答案:

没有答案