- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我们的 Angular 应用程序中有许多组件需要每秒定期显示每个组件唯一的新值(倒计时、时间戳、耗时等)。最自然的方法是创建使用 RxJS timer
和 interval
工厂函数的可观察对象。但是,这些会在整个应用程序的每个时间间隔触发 Angular 变化检测,调用时间间隔函数的次数。如果我们在页面上有几十个组件,这会触发整个应用程序每秒或每个时间段数十次的变化检测,从而产生很大的性能开销。
到目前为止,我尝试了两种方法来解决这个问题。对任何一个的好的回答都会非常有帮助——最好是两者兼而有之。我想避免手动触发变更检测,而是依赖于 Observables 发出的新值,并让异步管道/OnPush 变更检测策略负责触发变更检测。如果这不可能,我想了解原因。
timer
或 interval
函数触发 Angular 变化检测吗?使用 NgZone zone.runOutsideAngular(() => this.interval$ = interval(1000) ... )
似乎不会执行此操作。 StackBlitz 示例:https://stackblitz.com/edit/angular-zo5h39 Subject
结合在 zone.runOutsideAngular
中调用的 setInterval
创建一个 Observable 流,为什么不改变当主题发出新值时触发子组件的检测? StackBlitz 示例:https://stackblitz.com/edit/angular-yxdjgd 最佳答案
- Is there any way to disable or prevent RxJS timer or interval functions from triggering Angular change detection? Using NgZonezone.runOutsideAngular(() => this.interval$ = interval(1000) ... )does not appear to do this.
这是因为可观察对象是冷的,并且值生成器 (setInterval) 仅在订阅发生时执行。阅读更多 here .虽然这段代码是在 Angular 区域之外执行的:
() => this.interval$ = interval(1000) ...
它实际上并没有立即调用 interval
运算符中的值生成器。稍后将在 IntervalInnerComponent
中的 AsyncPipe 订阅时调用。这发生在 Angular 区域内:
在下一个替代方案中使用主题,您可以将其设为热点并立即在 Angular 区域之外订阅。
- Alternatively, if I create an Observable stream using an RxJS Subject combined with setInterval called inside zone.runOutsideAngular... setInterval values are being created (they can be subscribed tomanually), but the async pipe does not appear to be triggering changedetection
因为 Async Pipe 不会触发变更检测。它只是标记一个组件及其所有祖先,以便在接下来的更改检测期间随时进行检查。看这个answer或 this article更多细节。 Zone.js 触发变化检测。但是由于您在 Angular 区域之外运行 setInterval
,它不会触发它。在此设置下,您有几个选项:
ChangeDetectorRef
并手动触发组件及其祖先的变更检测ApplicationRef
并手动触发整个应用程序的变更检测关于javascript - 在 Angular 中渲染基于时间的 Observables 而无需压倒性的变化检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53618090/
在我的 OpenGL 程序中,我按顺序执行以下操作: // Drawing filled polyhedrons // Drawing points using GL_POINTS // Displa
我想传递一个包含原始页面的局部变量,这个变量只包含一个带有值的符号。 当我使用此代码时,它运行良好,可以在部分中访问 origin 变量: render :partial => "products",
为什么这个 HTML/脚本(来自“JavaScript Ninja 的 secret ”)不渲染? http://jsfiddle.net/BCL54/
我想在阅读完 View 后返回到特定的网页位置(跳转到页内 anchor )。换句话说,在 views.py 中,我想做类似的事情: context={'form':my_form} return r
我有一个包含单条折线的 PathGeometry,并以固定的间隔向该线添加一个新点(以绘制波形)。使用 Perforator 工具时,我可以看到每次向直线添加一个点时,WPF 都会将整个 PathGe
尝试了解如何消除或最小化网站上不同 JavaScript 库的渲染延迟。 例如,如果我想加载来自许多社交网络的“即时”关注按钮,它们似乎会相互阻止渲染,并且您会收到令人不快的弹出窗口。 (func
我有以 xyz 点格式表示 3D 表面(即地震断层平面)的数据。我想创建这些表面的 3D 表示。我使用 rgl 和 akima 取得了一些成功,但是它无法真正处理可能会自行折叠或在同一 x,y 点具有
我正在用 Libgdx 编写一个小游戏。 我有一个 Render[OpenGL] 线程,它不断对所有对象调用 render() 和一个更新线程不断对所有对象调用 update(double delta
我有一个 .Rmd 文件包含: ```{r, echo=FALSE, message=FALSE, results='asis'} library(xtable) print(xtable(group
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 9 年前。 Improve
请不要评判我,我只是在学习 Swift。 最近我安装了 MetalPetal 框架,并按照说明操作: https://github.com/MetalPetal/MetalPetal#example-
如果您尝试渲染 Canvas 宽度和高度之外的图像,计算机是否仍会尝试渲染它并使用资源来尝试渲染它?我只是想找出在尝试渲染图像之前检查图像是否在 Canvas 内是否更好。 最佳答案 我相信它仍然在无
我在 safari 中渲染时遇到问题。 在 firefox、chrome 和 IE 上。如下图所示: input.searchbox{-webkit-border-radius:10px;-moz-b
我正在尝试通过远程桌面在 Windows7 下运行我在 RHEL7 服务器中制作的 java 程序。 服务器中的所有java程序都无法通过远程桌面呈现。如果我在服务器位置访问服务器本身,它们看起来没问
我正处于一个新项目的设计阶段,该项目将采用数据集并将其加载到文档中,然后围绕模板呈现文档。呈现的文件可以是 CSV 数据集、PDF 营销信函、电子邮件……很多东西。数据不会是数学方程式,我只是在寻找一
有没有办法在不同的 div 下渲染 React 组件的子组件? ... ... ... ... ...
使用以下代码: import numpy as np from plotly.offline import iplot, init_notebook_mode import plotly.graph_
截至最近, meteor 的所有文档都指出 onRendered是一种在模板完成渲染时获取回调的新方法。和 rendered只是为了向后兼容。 但是,这似乎对我不起作用。 onRendered永远不会
所以在我的基本模板中,我有:{% render "EcsCrmBundle:Module:checkClock" %} 然后我创建了 ModuleController.php ... getDoctr
我正在使用 vue-mathjax 来编译我的 vue 项目中的数学方程。它正在编译第一个括号 () 之间的文本。我想防止编译括号内的字符串。在文档中我发现,对于$符号,如果我们想逃避编译,我们需要使
我是一名优秀的程序员,十分优秀!