ApplicationRef.tick vs setTimeout



我在我的角度应用程序中遇到了这种情况,我必须这样做

...                     // change @input of a component
setTimeout(() => {      // wait for the component to process the change
...                 // do stuff
});

现在我注意到,如果我使用tick函数,我可以得到相同的结果ApplicationRef

this.appRef.tick();

这看起来是一种更好(更有棱角(的方式。

所以我的问题是,这两种解决方案是否总是有相同的结果。因为如果是这样,我会说setTimeout更容易,因为您不必将 ApplicationRef 注入构造函数。

这是不一样的:

setTimeout(()=> {});

只是模拟 Angular 拾取的异步事件以对当前组件执行更改检测。 您可以将其视为与ChangeDetectorRef的这种使用相同

_changeDetectorRef.detectChanges()

而你的

this.appRef.tick();

将检查整个应用程序和当前加载在视图树中的所有组件,而不是您正在使用的单个组件。

我会说一个同时加载了许多组件的应用程序,setTimeout 应该比 appRef.tick 快,但我认为速度差异通常在于毫秒,如果不是更少的话。

除了这种差异之外,其他一切都保持不变

最新更新