gpt4 book ai didi

javascript - AngularJS 摘要循环多久运行一次?

转载 作者:IT王子 更新时间:2023-10-29 03:16:02 26 4
gpt4 key购买 nike

在讨论 AngularJS 的优点时,双向数据绑定(bind)通常被吹捧为 Angular 优于其他 JS 框架的主要优点。 Digging deeper ,文档表明这个过程是通过脏检查而不是通过事件驱动的措施来完成的。起初,digest-loop 的工作原理似乎是让一个方法在后台定期触发,在每个周期检查所有的 $watches。然而,进一步阅读,似乎摘要循环实际上是由 rootScope.digest() 触发的,而 $.apply 又反过来触发了它,而后者又是由事件 (!) 触发,例如通过 ng-click 调用的 onClick 事件。

但是,这怎么可能呢?我以为 Angular doesn't use change listeners .那么摘要循环究竟是如何运作的呢? Angular 是在内部自动启动摘要循环,还是由事件触发摘要循环?如果摘要循环是自动运行的,它多久运行一次?


一些澄清点:

  • 我不是在询问在手动绑定(bind)到更改时摘要循环如何运行。在这种情况下,如果您想强制进行摘要循环,可以通过调用 $.apply()
  • 来实现
  • 我也不是在询问摘要循环响应用户事件的频率。例如,如果 ng-model 在输入框上,Angular 将在用户开始输入时启动摘要循环。令人困惑的部分是,为了知道用户正在键入,Angular 是否在某处使用了基于事件 onKeyUp
  • 我已经知道每个摘要循环最多有 10 个循环的限制。我的问题不是每个摘要循环的周期数,而是每秒运行的摘要循环数。
  • 奖励问题:摘要循环与 JavaScript 事件循环有何关系? JS事件循环是否在后台周期性运行?摘要循环是否与事件循环相同,但仅在“Angular 上下文”中?这些是完全不同的想法吗?

最佳答案

Angular 摘要被触发 - 它们不会通过轮询发生。

代码执行,代码执行完毕后,angular触发摘要

例子:

 element.on('click', function() {
$scope.$apply(function() {
// do some code here, after this, $digest cycle will be triggered
});
});

Angular 还会在编译/链接阶段之后触发 $digest:

Compile > Link > Digest

以及触发了多少个摘要循环?这取决于范围变量稳定的时间。通常至少需要 2 个周期才能确定。

关于javascript - AngularJS 摘要循环多久运行一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25177704/

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