Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Angular中正确处理setTimeout_Javascript_Angular - Fatal编程技术网

Javascript 在Angular中正确处理setTimeout

Javascript 在Angular中正确处理setTimeout,javascript,angular,Javascript,Angular,我有一个单页web应用程序,在主组件的ngOnInit函数中,它调用一个函数loopDoSomething,该函数是递归的,使用setTimeout,如下所示: ngOnInit(): void { // Some operations this.loopDoSomething(); } loopDoSomething() { // Some operations setTimeout(this.loopDoSomething.bind(this), 1500); } 我应该

我有一个单页web应用程序,在主组件的ngOnInit函数中,它调用一个函数loopDoSomething,该函数是递归的,使用setTimeout,如下所示:

ngOnInit(): void {
  // Some operations
  this.loopDoSomething();
}

loopDoSomething() {
  // Some operations
  setTimeout(this.loopDoSomething.bind(this), 1500);
}
我应该在loopDoSomething中添加一个停止条件吗?还是这样就足够了


基本上,我要问的是,关闭页面是否会自动停止运行loopDoSomething的进程,还是应该在Ngondestry函数中手动处理它?

浏览器本身就是Javascript代码的编译器,当您打开选项卡时,它将创建html文档的DOM文档对象模型和一个名为window的全局对象


当你关闭浏览器时,所有这些当然都会被破坏,因为浏览器本身就是主机,主机已经不存在。

是的,关闭浏览器窗口或选项卡将停止该窗口/选项卡上运行的所有JS代码。您可能应该使用setInterval,顺便说一句,并使用arrow函数:setInterval=>this.doSomething,1500。@JBNizet谢谢!顺便问一下,为什么我应该使用setInterval呢?除了代码优雅之外,还有什么不同?您是否从递归调用中获得了可观察性?这与角度无关。这些是本机JavaScript函数。setTimeout执行一次函数,稍后执行。setInterval每N毫秒执行一个函数。因此,无需在每次调用函数时重新安排下一次函数调用@我再次感谢你。将标记更改为仅js。对不起,我是js和angular的新手,你可以看到