我还没有找到关于setTimeout
用法和Angular 2+表现的良好信息。 setTimeout
如何影响性能,以及Angular在触发setTimeout
时会做什么?一个网站建议它导致脏检查,但在我的测试中,我没有看到明显的差异。
UI使用示例:尽管我尽可能避免使用setTimeouts,但我仍然需要相对频率的UI组件。例如,假设所有可能的组件都加载到webapp上,在用户交互之后,我可能想要获取元素的offsetWidth,但它不会返回实际宽度,直到呈现元素。这是许多其他UI相关代码的最简单的例子,其中永恒的setTimeout是完美的。因此,当我设置属性elemWidth
(继续示例)时,我希望/希望Angular只关心我在一个组件实例中更改了一个属性而不进行任何其他对象检查。当我从我的整个UI组件库中删除所有setTimeout以使用所有这些组件库中的许多实例来测试webapp的性能时,Chrome没有显示从删除那些中获得的任何好处...我希望最快的组件成为可能,那么如何做setTimeouts会影响Angular 2+的性能,以及Angular对它们的反应是什么?
答案 0 :(得分:0)
Angular只运行Javascript,所以我不认为Angular中的setTimeout
会比你的vanilla更好或更差。
我可能想要获取元素的offsetWidth,但它不会返回实际宽度,直到呈现元素
使用ngAfterViewInit()
生命周期钩子。它是渲染视图时Angular调用的函数。此时,您将知道您的UI是什么样的。
使用大量的setTimeouts听起来像黑客一样公平。查看您正在观察的对象触发并绑定到那些事件的事件。