一个定时器事件会在多大程度上减慢我在JavaScript中的代码



我目前正在构建一个相当大的基于web的应用程序。我的工作是使用JavaScript和jQuery构建接口。最终应用程序将使用Ajax、C#和SQL。因此,在任何时候都有相当多的事情在发生。

我需要听一个活动。目前,我正在使用mouseover和mouseout事件的组合来触发此事件,但它并没有覆盖我的所有低音。

因此,我正在考虑使用JavaScript间隔计时器来定期检查事件是否应该触发。我很犹豫是否这样做,因为我担心代码太慢。

那么我的问题是这会在多大程度上减慢我的其余代码

我意识到这取决于在相应的函数中运行了多少代码,所以这里有一个快速的事情列表:

  • 我使用e.pageX和e.pageY获得鼠标坐标
  • 我使用document.elementFromPoint检查您当前悬停的元素
  • 我检查上面提到的元素是否有具有.最近值的特定类的父级
  • 如果是,则触发事件

总之,我想知道每隔几毫秒执行一次以上操作是否会显著降低应用程序的速度

任何建议都将不胜感激。

与其说是一个答案,不如说是一条评论,但对于评论框来说太多了。

这当然应该奏效:

$('.myClass').on('click', '*', function () {
    ...
});

$(documnt).on('click', '.myClass *', function () {
    ...
});

这取决于CCD_ 1元素是在CCD_。

下面是一个Javascript间隔计时器如何减慢应用程序速度的示例:

HTML:

Function calls: <span id="info"></span>
<br>
<input type="text"/>​

Javascript:

$(document).ready(function() {
    window.setInterval(function() {
        foo();
    }, 13);
});
var calls = 0;
function foo() {
    calls++;
    $("#info").html(calls);
    fib(35); // calculate fibonacci numbers
}
function fib(n) {
    return n < 2 ? n : fib(n - 1) + fib(n - 2);
}​

尝试在文本框中输入一些文本,你会看到应用程序的响应有多慢。根据电脑硬件的不同,您将或多或少延迟看到输入的文本。更改fib()函数的参数将使应用程序"更快"(参数的数量越少)或"更慢"(参数数量越大)。低数字(意味着函数执行得很快)不会降低应用程序的性能。

因此,对于您当前的情况,我认为间隔计时器不会显著降低您的应用程序的速度。但有几点需要考虑:

  • 该应用程序是否仅用于具有快速硬件的桌面浏览器
  • 移动设备/平板电脑是否也使用该应用程序?这些通常性能较差
  • 目前,间隔计时器只做非常简单的事情。但未来呢?也许有时会添加越来越多的功能,因为这是开发人员最简单的方法

因此,如果可能的话,我建议避免使用间隔计时器。

最新更新