代码之家  ›  专栏  ›  技术社区  ›  Borja

如何知道哪些事件会减慢setTimeout?

  •  0
  • Borja  · 技术社区  · 7 年前

    如何知道哪些事件会变慢 setTimeout() ?

    在我的代码中,我有一个2秒的关键帧动画。

    我添加了一个类来设置div的动画

    $('#first').addClass('first-start');
    

    以及使用 setTimeout 我添加了一个类,仅在1秒后停止动画。

    setTimeout(function() {
        $('#first').addClass('first-pause');
    }, 1000);
    

    所有的动画应该是2秒,如果我不阻止它。

    设置超时 我怎样才能解决这个问题?

    设置超时

    2 回复  |  直到 7 年前
        1
  •  1
  •   Bojan Markovic    7 年前

    JavaScript计时器非常不准确,您对此无能为力。只有满足以下两个条件时,计时器才会启动:

    • 当前活动排队事件的执行堆栈为空
    • 计时器已过

    理解为什么会这样的关键是理解JavaScript是单线程的(外部) Node.js Cluster WebWorker 原料药)

    列表中的第一项很大程度上取决于 setTimeout

    由于JavaScript是单线程的,因此在它的执行过程中没有任何东西被中断,并且队列中等待的项目(包括经过的计时器)只有在前面的所有项目都已完全执行时才被处理。

    https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop

        2
  •  -1
  •   sandeep kumar    7 年前

    在setTimeout中,使用removeClass函数删除添加的“first start”类。

    setTimeout(function() {
    $('#first').removeClass('first-pause');
    

    }, 1000);