Javascript 保持$interval同步

Javascript 保持$interval同步,javascript,angularjs,setinterval,Javascript,Angularjs,Setinterval,我有一个服务器请求的应用程序来检测什么时候发生了什么事情,在这一点上它设置了发生事情的倒计时。如果我在多个选项卡/设备上打开应用程序,它们都会同时获取事件,但它们的倒计时长度不同。有办法解决这个问题吗 我在其他地方看到,setInterval仅在选项卡处于活动状态时调用该函数,$interval的工作方式是否类似?所有的标签页似乎仍然没有被激活,只是以5-10%的速度被更新 我考虑的不是开始倒计时,而是应用程序保存当前日期,然后以非常快的时间间隔不断检查自该日期起是否已过适当的时间,但这似乎需要

我有一个服务器请求的应用程序来检测什么时候发生了什么事情,在这一点上它设置了发生事情的倒计时。如果我在多个选项卡/设备上打开应用程序,它们都会同时获取事件,但它们的倒计时长度不同。有办法解决这个问题吗

我在其他地方看到,setInterval仅在选项卡处于活动状态时调用该函数,$interval的工作方式是否类似?所有的标签页似乎仍然没有被激活,只是以5-10%的速度被更新

我考虑的不是开始倒计时,而是应用程序保存当前日期,然后以非常快的时间间隔不断检查自该日期起是否已过适当的时间,但这似乎需要大量计算,尽管应用程序的其余部分是轻量级的,因此这本身不会是一个问题

间隔本身非常快/简单:

countdownTimer = $interval(function () {
        $scope.countdown--;
}, 1000);

如果客户机正在等待服务器上的某个操作完成,那么应该在服务器上运行倒计时。但是,如果倒计时是为了等待其他客户机上的某个操作完成,那么Angular就不适合这样做,您应该使用类似socket.io的东西$仅当客户端正在等待它自己正在做的事情时才应使用间隔。这可能与未聚焦的浏览器选项卡间隔被限制为最小1000ms有关,也可能与此有关。