Javascript 提高窗口大小调整功能的性能

Javascript 提高窗口大小调整功能的性能,javascript,Javascript,我有一些类似于以下内容的脚本: var breakpoints = [0,240,480,960,9999], bpCount = breakpoints.length, windowsize = 0; window.onresize = function() { windowsize = document.body.clientWidth; for(var i=0; i<bpCount; i++) { if(windowsize &g

我有一些类似于以下内容的脚本:

var breakpoints = [0,240,480,960,9999],
    bpCount = breakpoints.length,
    windowsize = 0;

window.onresize = function() {

    windowsize = document.body.clientWidth;

    for(var i=0; i<bpCount; i++) {
        if(windowsize >= breakpoints[i] && windowsize < breakpoints[i+1]) {
            doSomething(breakpoints[i]);
            break;
        }
    }    

};
var断点=[02404809609999],
bpCount=断点.length,
windowsize=0;
window.onresize=函数(){
windowsize=document.body.clientWidth;
对于(变量i=0;i=breakpoints[i]&&windowsize
然而,这似乎运行得很慢,即使在一台像样的电脑上使用Chrome,甚至当“doSomething”只是执行一个“console.log”时,我只是想知道是否有更好的方法来检查屏幕大小是否在两个值之间

谢谢

不要每次都对尺寸进行投票。你的计算能力太强了

相反,制作一个计时器,每隔一段时间检查一次大小(
10ms
可能太快):

var checkWindowSizeTimer;
函数checkWindowsSize(){
var windowsize=document.body.clientWidth;
if(windowsize>=断点[i]&&windowsize<断点[i+1]){
doSomething(断点[i]);
clearInterval(CheckWindowsSizeTimer);
}
}
window.onresize=函数(){
CheckWindowsSizeTimer=setInterval(CheckWindowsSize,10);
}
当窗口的大小超过您的边界时,计时器退出。

不要每次轮询大小。你的计算能力太强了

相反,制作一个计时器,每隔一段时间检查一次大小(
10ms
可能太快):

var checkWindowSizeTimer;
函数checkWindowsSize(){
var windowsize=document.body.clientWidth;
if(windowsize>=断点[i]&&windowsize<断点[i+1]){
doSomething(断点[i]);
clearInterval(CheckWindowsSizeTimer);
}
}
window.onresize=函数(){
CheckWindowsSizeTimer=setInterval(CheckWindowsSize,10);
}

当窗口的大小超过您的边界时,计时器将退出。

可能一点函数限制/取消限制会有所帮助,例如使用下划线库:您是否只想为每个范围
doSomething()
一次?可能一点函数限制/取消限制会有所帮助,例如,使用下划线库:是否只想为每个范围
doSomething()
一次?延迟函数是否会进一步降低效果?我基本上只是想知道是否有一种更快的方法来检查某个特定的数字在哪个范围内。它会减慢你想做的事情,但比你的方法要慢得多。用户移动鼠标的速度不够快,以至于没有注意到。延迟功能是否会进一步降低效果?我基本上只是想知道是否有一种更快的方法来检查某个特定的数字在哪个范围内。它会减慢你想做的事情,但比你的方法要慢得多。用户移动鼠标的速度不够快,无法注意到。
var checkWindowSizeTimer;

function checkWindowSize() {
    var windowsize = document.body.clientWidth;

    if (windowsize >= breakpoints[i] && windowsize < breakpoints[i+1]) {
        doSomething(breakpoints[i]);
        clearInterval(checkWindowSizeTimer);
    }
}

window.onresize = function() {
  checkWindowSizeTimer = setInterval(checkWindowSize, 10);
}