Javascript setTimeout()是否影响性能

Javascript setTimeout()是否影响性能,javascript,Javascript,我想知道这段代码是否会在客户端加载,因为超时时间太长了 //and update this again in a bit setTimeout(function() { updateWeather(lat,lng); }, 60000); 你的问题的答案取决于: 您在其上执行此操作的设备 环境-您执行了多少次 独立设置超时不会损害浏览器;然而,如果你重复做同样的事情,那会有不同 请查看以下网站以了解更多信息 不仅仅是代码。

我想知道这段代码是否会在客户端加载,因为超时时间太长了

        //and update this again in a bit
        setTimeout(function() {
            updateWeather(lat,lng);
        }, 60000);

你的问题的答案取决于:

  • 您在其上执行此操作的设备
  • 环境-您执行了多少次
  • 独立设置超时不会损害浏览器;然而,如果你重复做同样的事情,那会有不同

    请查看以下网站以了解更多信息


    不仅仅是代码。系统空转一分钟。只要UpdateWather没有严重的性能问题,并且时间间隔很短,setTimeout就不会成为产品(我相信你指的是setInterval,而不是定期检查的setTimeout)

    60秒计时器在操作系统中是通过魔法实现的:它基本上不会在等待的60秒内增加CPU负载

    我猜
    updatewather()
    正在轮询一个外部资源,因此对您的问题的答案是简单的“不,没问题”。(由于天气不会经常变化,我建议改为5分钟,请参阅下面关于电池寿命的评论。)(更好的是:看看天气数据提供商是否会给你一个字段,告诉你下一次更新的时间,并在此基础上使用
    setTimeout

    在其他情况下,例如,如果您在这60秒内一直在收集某种数据,然后一次性处理,这可能会导致负载高峰。用户可能会注意到这一点(例如,所有动画每60秒就会抖动一次)。在这种情况下,最好使用5秒计时器,一次处理5秒的数据

    相反,如果你在移动设备上使用网络,你必须考虑电池寿命:唤醒和寻找连接可以占主导地位。因此,将轮询时间从60秒延长到120秒实际上可以使电池寿命加倍。Ilya Grigorik在他的书《高性能浏览器网络》中有一个非常好的章节,
    …这里是:

    除了其他答案之外,还需要记住一件事,即环境变量的关闭可能会对内存性能产生影响。如果您的
    setTimeout
    回调上方的作用域中有一个或多个变量引用了一个或多个gajillion对象,那么只要回调排队,这些对象就会一直存在。我们无法从您发布的代码中看出这一点,因此无法确定您的问题的答案。此外,如果多次调用您的
    setTimeout
    ,它将为每个调用创建一个闭包,从而有效地复制环境并占用堆空间。

    为什么一分钟不做任何事情比一分钟不做任何事情会导致更大的负载?;-)不,不是。但是,非常短的超时可能是:根本没有显著影响,
    setTimeout
    在事件循环中运行,它不会阻止或损害执行。选择您的答案是因为您提到了setInterval-我想我应该在本例中使用setInterval,因为此示例代码实际上在updatewather函数本身内部,在函数的末尾。这是一个糟糕的idéa,使用setInterval是否比使用setTimeout有性能改进,或者它们是一样的,setInterval只是一种不必像我那样进行自我调用的简便方法吗?我自己还没有对其进行基准测试,但就优雅性而言,setInterval更好。我现在将运行基准测试。