Javascript 在Angular中正确处理setTimeout
我有一个单页web应用程序,在主组件的ngOnInit函数中,它调用一个函数loopDoSomething,该函数是递归的,使用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); } 我应该
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的新手,你可以看到