我已经在不可变数据中使用了 OnPush 更改检测。 我想知道是否可以通过使用ngZone.runOutsideAngular对更改检测进行进一步的优化? 我只是在这里寻找一些指导方针。
它们不是特别相关。OnPush
控制每个组件级别的更改检测,而ngZone
"排序"触发器整个应用程序的更改检测。
Angular 使用区域,特别是NgZone
在没有更多任务时获得通知。在区域中计划的任务将在此区域中执行。因此,所有像setTimeout
这样的异步任务都在NgZone
内执行。该ngZone.runOutsideAngular
允许您在ngZone
之外安排任务,这意味着一旦完成,Angular 将不会收到通知,也不会发生更改检测。
如果您有一些每秒执行多次的重复异步任务(如鼠标移动事件(,那么您可能会利用ngZone.runOutsideAngular
来避免触发每个事件的更改检测。然后,您可以计划每秒一次手动更改检测。除此之外,我想不出它如何帮助您优化应用程序。