我有一个运行onload的setInterval函数,用户在我的网站上的整个时间。基本上它所做的是逐步扫描window.innerWidth和window.outerWidth之间的差异(也就是它检测用户是否正在以100%缩放以外的任何其他方式查看网站),并补偿它,因为我需要一个固定的对象缩小时居中对齐,但放大时左对齐。现在该功能每250毫秒运行一次。我要问的是,如果有的话,这对网页有何影响?
答案 0 :(得分:3)
您应该阅读一篇名为How JavaScript Timers Work的文章。基本上,所有js代码都在一个事件循环中运行,并且所有事件处理程序都排队,并尽快执行 :
为了理解定时器如何在内部工作,有一个 需要探索的重要概念:定时器延迟不是 保证。由于浏览器中的所有JavaScript都在单个上执行 线程异步事件(例如鼠标点击和计时器)只是 在执行中有一个开放时运行。
有时甚至可能无法执行定时器处理程序;有时超时超时两次,但解释器只有一次运行处理程序,丢弃其他排队事件。
真的,阅读那篇文章,这是值得的。
答案 1 :(得分:1)
如果你每四分之一只运行它,它“不应该”产生太大的影响。我说不应该因为我不确切地知道它是做什么来a)决定是否需要调整和b)进行调整。
那就是说,这听起来像是为事件而不是民意调查的情况。也许你应该看看window.onresize
。
答案 2 :(得分:0)
如果 your other questions 中的某些回复充分回答了您的问题,那么您应该接受它们作为礼貌的模态回答。
此外,您的setInterval
以250毫秒的间隔运行。如果您的功能需要超过250毫秒才能完成执行,那么它可能会导致它们一个接一个地连续运行,从而减慢用户的计算机速度。
更好的方法是由@ ime-vidas给出的,它将你的函数排队在前一个函数结束后运行延迟。