gpt4 book ai didi

angular - 所有 setInterval 函数都会触发更改检测吗?

转载 作者:行者123 更新时间:2023-12-02 17:57:07 24 4
gpt4 key购买 nike

根据标题,我很好奇每次我使用 setInterval 创建一个间隔时,由于 Angular 所做的填充,是否会在每次间隔运行时创建一个更改检测事件。

我已经阅读了我能找到的所有文档,但找不到对此的明确答案。

为了澄清,我的问题是,如果我运行以下代码,间隔的每次迭代是否都会触发更改检测事件并导致 Angular 尝试更新应用程序的 View ,直到满足条件?

let myInterval = setInterval( () => {

if (conditionsAreMet()){
clearInterval(myInterval);
}
})

最佳答案

这取决于此 setInterval 使用的区域。如果它在 NgZone 内部使用,那么是的,它每次都会触发更改检测。如果您在 Angular 区域之外运行它,它不会触发更改检测。

外部 Angular 区域:

export class AppComponent {
name = 'Angular';

constructor(zone: NgZone) {
// will not trigger change detection
zone.runOutsideAngular(() => {
setInterval(() => {
this.name = 'boob';
}, 2000);
})

Angular 区域内:

export class AppComponent {
name = 'Angular';

constructor(zone: NgZone) {
// will trigger change detection
setInterval(() => {
this.name = 'boob';
}, 2000);
}

关于angular - 所有 setInterval 函数都会触发更改检测吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44267106/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com