Javascript setInterval在本地但在服务器上工作

Javascript setInterval在本地但在服务器上工作,javascript,node.js,angular,settimeout,setinterval,Javascript,Node.js,Angular,Settimeout,Setinterval,我使用的是Angular 10,以下setInterval代码在我的本地计算机中工作: ngOnInit() { this.myfunc(); setInterval(this.myfunc.bind(this), 120000); } 但是,相同的代码在服务器上不起作用。 换句话说,在服务器上运行时,myfunc()在2分钟后不会触发 调试详细信息: 在my local中,第一次加载组件时会调用this.myfunc()。根据setInterval() 但

我使用的是
Angular 10
,以下
setInterval
代码在我的本地计算机中工作:

ngOnInit() {
         this.myfunc();
         setInterval(this.myfunc.bind(this), 120000);
}
但是,相同的代码在服务器上不起作用。 换句话说,在服务器上运行时,
myfunc()
2分钟后不会触发

调试详细信息:

在my local中,第一次加载组件时会调用
this.myfunc()
。根据
setInterval()

但是,在服务器上运行时,第一次加载组件时会调用
this.myfunc()
。但是,根据
setInterval()

问题,在
2分钟之后,
不会再次调用它
setInterval
有时会漂移,如中所示

解决方案 从开始,你首先要做一个非漂流类:

功能调整间隔(工作函数,间隔){
让那=这;
让我们期待,超时;
这个。间隔=间隔;
this.start=函数(){
预期=Date.now()+this.interval;
超时=设置超时(步骤,此.interval);
}
this.stop=函数(){
clearTimeout(超时);
}
函数步骤(){
让漂移=Date.now()-预期值;
workFunc();
预期+=该时间间隔;
timeout=setTimeout(步长,Math.max(0,that.interval-drift));
}
}
然后,您只需将其用于代码:

ngOnInit(){
让ticker=new AdjustingInterval(this.myfunc.bind(this),120000);
this.myfunc();
ticker.start();
}

我通过将
setInterval()
更改为callback来解决问题,如下所示:

setInterval(() => {
    this.myfunc(); }, 120000);
}

更新的
ngOnInit()
如下所示:

ngOnInit() {
         this.myfunc();
         setInterval(() => {
         this.myfunc(); }, 120000);
  }
}

时间间隔有时会漂移。你解释过漂流吗?没有。你能建议如何核算吗?试试这个,你能建议一下我的情况下更新后的代码是什么样子吗?谢谢你要我给你写一封回信吗?