我知道这个问题已经被问过多次(是的,我做了一些研究),但我找不到适合我需求的解决方案。
到目前为止我所做的:
我正在构建一个函数,用于跟踪用户向下滚动页面的百分比并将其很好地显示在某个进度条中。这工作得很好,但是当我在 Chrome 上打开开发者控制台并查看“时间轴”选项卡(这以漂亮的图形显示正在运行的内容)时,我意识到我的代码非常“活跃”。它运行用户向下滚动页面的每个像素,说实话,这是相当多的。
所以我想,如何才能改进这一点,我想出了一个解决方案,即每 {whatever} 毫秒只执行一次函数。如果函数已在 {whatever} 毫秒内执行,则这涉及将变量设置为 true 或 false。
我想完成什么:
我希望能够设置对外部变量的引用,该变量将充当标志来确定函数是否已经执行。
function qeue(fn, interval, status){ // this function name might not be very fitting..
// fn = function to be executed
// interval = function can only run once between the intervals
// status = tricky part..
// This should contain a reference to an external variable that is either true or false
}
如何才能做到这一点?
边注
如果这个解释没有帮助,并且您仍然没有得到我想要的:
如何将对变量的引用传递给函数,以便该函数可以根据该变量的值进行操作?
为什么普通参数不是一个选项我想在函数内实现某种递归 setTimeout 功能,检查另一个函数是否已执行,如果我将其传递给参数,则该参数在此过程中不能更改。
希望你们能帮帮我!
谢谢
感谢您的精彩回答。你让我学到了很多。我将采用去抖策略!我标记了 T.J.克劳德是最好的答案,因为这是一个很好的解释,也是第一个解释。但再次感谢大家!