仅在函数未被调用时调用函数/仅运行函数一次

2024-03-04

我有一个函数animate_images在我的网站的一些页面上运行,执行特定的动画。

我遇到的问题是,当用户再次导航到同一页面时,除了已经运行的实例之外,该函数还会被第二次调用。

有没有办法做这样的事情:

if ! (animate_images) {
  animate_images();
}

本质上,我想确保animate_images无论实际调用多少次,都不会运行多次。


看看onceunderscore.js 中的函数 -链接在这里 http://underscorejs.org/docs/underscore.html#section-66.

本质上,您将该函数包装在另一个函数中,该函数内部有一个标志变量。如果未设置标志,则调用该函数,并在调用时设置该标志。

_.once = function(func) {
  var ran = false, memo;
  return function() {
    if (ran) return memo;
    ran = true;
    memo = func.apply(this, arguments);
    func = null;
    return memo;
};

};

如果您不想在网站中添加下划线(我认为这是启动任何网站时应该做的第一件事,但我离题了),请执行以下操作:

runOnlyOnce = function(func) {...} // As defined above

animate_images = runOnlyOnce(animate_images);

or

animate_images = runOnlyOnce(function(){
    alert('Animate all the things!');
});

该函数本身不依赖于下划线的其余部分。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

仅在函数未被调用时调用函数/仅运行函数一次 的相关文章

随机推荐