为啥 ngOnInit() 为 setInterval() 执行多次?
Posted
技术标签:
【中文标题】为啥 ngOnInit() 为 setInterval() 执行多次?【英文标题】:why does ngOnInit() execute multiple times for setInterval()?为什么 ngOnInit() 为 setInterval() 执行多次? 【发布时间】:2021-04-12 10:39:34 【问题描述】:我是 Angular 的初学者。
export class CountComponent implements OnInit
public no:number;
constructor()
this.no=0;
public myfun():void
this.no++;
alert(this.no);
ngOnInit(): void
this.myfun();
当我运行上面的代码时,alert() 只会弹出一次。这意味着 ngOnInit() 只执行一次。 但是
export class CountComponent implements OnInit
public no:number;
constructor()
this.no=0;
public myfun():void
setInterval(()=>
this.no++;
alert(this.no);
,1000);
ngOnInit(): void
this.myfun();
当我运行上面的代码时,alert() 反复弹出。这意味着 ngOnInit() 连续执行多次(或 myfun() 执行多次)。
所以我的问题是,当我在 myfun() 中添加 setInterval() 时,为什么 ngOnInit() 会执行多次而不是一次?
如果这个问题已经被问到,请给我完整的解释并原谅我。
【问题讨论】:
也许您想使用setTimeout
而不是 setInterval
? ngOnInit 被调用 1 次。问题出在逻辑上
是的,也许setTimeout
让ngOnInit
执行一次。但是请解释一下为什么setInterval
让ngOnInit
执行多次?我正在寻找原因
它不会多次执行 ngOninit.. 它会多次执行 setInterval 中的回调.. 也许你应该阅读一下 setInterval 是什么..?
【参考方案1】:
1000 = 1 seg,尝试增加值
【讨论】:
但是你能解释一下为什么setInterval
让ngOnInit
执行多次吗?我正在寻找原因
不是多次执行ngOnInit,间隔是在提供的时间段内重复的循环以上是关于为啥 ngOnInit() 为 setInterval() 执行多次?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 angular-cli 生成 ngOnInit 而无需输入函数结果?
为啥我应该在构造函数而不是 ngOnInit 中创建我的 Angular2 响应式表单?
当我在 ngOnInit() 中使用 router.getCurrentNavigation() 时,它会给我类型错误,但是当我在构造函数中使用它时,它工作正常,为啥?
setInterval,为啥只有当 clearInterval 函数高于 setInterval 函数时,计时器才停止?