首页 > 解决方案 > 如果里面的函数实际上没有做任何事情,重复调用 `setInterval()` 会损害性能吗?

问题描述

我的网站上有一个第三方 JavaScript 插件,它使用 HTML 表格生成报告,但它应用了自己的样式,修改起来既丑陋又麻烦(每个表格元素都有大量的类,它们设置了一大堆属性我需要覆盖等)。插件无法更改此设置。

我的网站是在 Bootstrap 4 中构建的,所以我发现我可以做的是通过 jQuery 选择这些生成的表,然后简单地剥离它们的所有自定义类并用标准的 Bootstrap 表类替换它们。现在,它们的外观和工作方式与我网站上的所有其他表格完全一样。

问题是,该插件没有公开任何事件或任何让我知道何时生成表的事件。所以我只好在间隔上触发一个函数来查找具有这些特定自定义类的表;如果找到,则将它们剥离并在 Bootstrap 类中交换:

$(function () {
    var checkForTables = setInterval(styleTables, 500);

    function styleTables() {
        $("table.tableWithWeirdStyling").each(function () {
            $(this).attr("class", "table table-bordered table-striped");
        });
    }
});

但我不禁觉得这对性能不利,因为这个函数500ms无限期地触发,无论这些表中的任何一个是否存在于特定页面上(一旦找到表我就无法清除间隔并应用样式,因为用户总是可以选择重新生成它们,所以我必须不断检查)。

我的问题是:如果我网站上的大多数页面甚至都没有这些表,那么如果该功能甚至没有做任何事情,这实际上对性能不利吗?如果是这样,还有其他方法可以实现吗?

标签: javascriptjqueryperformancesetinterval

解决方案


推荐阅读