Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 恒定的设置间隔如何影响页面功能(是否会减慢响应时间,或损害用户命令等)?_Javascript_Setinterval - Fatal编程技术网

Javascript 恒定的设置间隔如何影响页面功能(是否会减慢响应时间,或损害用户命令等)?

Javascript 恒定的设置间隔如何影响页面功能(是否会减慢响应时间,或损害用户命令等)?,javascript,setinterval,Javascript,Setinterval,我有一个setInterval函数在加载时运行,用户在我的站点上的整个时间都在运行。基本上,它所做的是逐步扫描window.innerWidth和window.outerWidth之间的差异(也称为检测用户是否以100%缩放以外的任何方式查看站点),并对其进行补偿,因为我需要一个固定对象在缩小时居中对齐,但在放大时左对齐。现在,该功能每250毫秒运行一次。我想问的是,这对网页有什么影响?如果你只每四分之一秒运行一次,它“不应该”有多大影响。我说不应该,因为我不知道它到底在做什么,a)决定是否需要

我有一个setInterval函数在加载时运行,用户在我的站点上的整个时间都在运行。基本上,它所做的是逐步扫描window.innerWidth和window.outerWidth之间的差异(也称为检测用户是否以100%缩放以外的任何方式查看站点),并对其进行补偿,因为我需要一个固定对象在缩小时居中对齐,但在放大时左对齐。现在,该功能每250毫秒运行一次。我想问的是,这对网页有什么影响?如果你只每四分之一秒运行一次,它“不应该”有多大影响。我说不应该,因为我不知道它到底在做什么,a)决定是否需要调整,b)进行调整

这就是说,这听起来像是针对事件而不是投票的情况。也许你应该看看
窗口。onresize

如果你只是每四分之一秒运行一次,它“不应该”有太大的影响。我说不应该,因为我不知道它到底在做什么,a)决定是否需要调整,b)进行调整


这就是说,这听起来像是针对事件而不是投票的情况。也许你应该看看window.onresize

你应该读一篇名为。基本上,所有js代码都在事件循环中运行,所有事件处理程序都排队并尽快执行:

为了了解计时器如何在内部工作,有一个 需要探讨的重要概念:计时器延迟不是 放心。因为浏览器中的所有JavaScript都在一个 线程异步事件(如鼠标单击和计时器)仅限于 在执行过程中出现空缺时运行

有时甚至可能不执行计时器处理程序;有时超时会过期两次,但解释器只有机会运行处理程序一次,从而丢弃另一个排队事件


真的,读那篇文章,它是值得的。

你应该读一篇名为。基本上,所有js代码都在事件循环中运行,所有事件处理程序都排队并尽快执行:

为了了解计时器如何在内部工作,有一个 需要探讨的重要概念:计时器延迟不是 放心。因为浏览器中的所有JavaScript都在一个 线程异步事件(如鼠标单击和计时器)仅限于 在执行过程中出现空缺时运行

有时甚至可能不执行计时器处理程序;有时超时会过期两次,但解释器只有机会运行处理程序一次,从而丢弃另一个排队事件

真的,读那篇文章,它是值得的。

如果你的问题中的一些回答足够回答你的问题,你应该礼貌地接受它们作为模式回答

此外,
setInterval
以250ms的间隔运行。如果函数的执行时间超过250ms,则可能会导致函数连续运行,从而降低用户计算机的速度

@ime vidas提供了一种更好的方法,它将您的函数排队,以便在上一个函数结束后运行一个延迟。

如果您的问题中的一些回答能够充分回答,您应该礼貌地接受它们作为模式回答

此外,
setInterval
以250ms的间隔运行。如果函数的执行时间超过250ms,则可能会导致函数连续运行,从而降低用户计算机的速度


@ime vidas给出了一种更好的方法,它将函数排队,以便在上一个函数结束后运行一个延迟。

为什么不处理该事件,同时忘记计时器呢?我的非正式测试似乎表明,当缩放改变时也会触发此事件。我建议改为
setTimeout
<代码>设置超时(函数f(){/*做你的事*/setTimeout(f,250);},250)我认为OP不想只运行一次函数。@AndrewHubbs看看我的代码。在函数体内部,我正在设置下一个超时。@ŠimeVidas:那篇文章绝对不正确。使用
setInterval
,由于执行线程繁忙而错过的调用只会被丢弃,而不会排队。当事件循环再次运行时,
setInterval
回调将尽快执行(如果过期),并按正常计划继续。事实上,您建议使用
setTimeout
实际上适得其反,因为它会导致不规则的计时,这取决于回调执行所需的时间。为什么不一起处理事件并忘记计时器呢?我的非正式测试似乎表明,当缩放改变时也会触发此事件。我建议改为
setTimeout
<代码>设置超时(函数f(){/*做你的事*/setTimeout(f,250);},250)我认为OP不想只运行一次函数。@AndrewHubbs看看我的代码。在函数体内部,我正在设置下一个超时。@ŠimeVidas:那篇文章绝对不正确。使用
setInterval
,由于执行线程繁忙而错过的调用只会被丢弃,而不会排队。当事件循环再次运行时,
setInterval
回调将尽快执行(如果过期),并按正常计划继续。事实上,您建议使用
setTimeout
实际上适得其反,因为它会导致不规则的计时,这取决于回调执行所需的时间。我甚至没想过要重新调整大小。非常感谢你,我甚至都没想过。多谢各位。