我现在读了很多关于 AngularJS 的文章,并且遇到了神奇的 $watch 函数。我知道如何使用它,但我想知道它在后台是如何实现的。是时间间隔函数吗?或者是 Angular 会在执行的每个语句中调用此监视?
我现在不想深入研究源代码,如果你们中有人已经知道答案并想分享他关于该主题的知识,我会很高兴。
Thanks.
每个摘要循环都会评估所有监视(有时多次)。摘要循环是由于某些事件或调用 $apply() 而进入的。手表不会根据计时器定期调用。
See https://docs.angularjs.org/guide/scope#integration-with-the-browser-event-loop https://docs.angularjs.org/guide/scope#integration-with-the-browser-event-loop
浏览器的事件循环等待事件到达。事件的回调被执行...回调执行后,浏览器将离开 JavaScript 上下文并根据 DOM 更改重新渲染视图。 Angular 通过提供自己的事件处理循环来修改正常的 JavaScript 流程。这将 JavaScript 分为经典执行上下文和 Angular 执行上下文...Angular 执行 [some]stimulusFn(),它通常会修改应用程序状态。 Angular 进入 $digest 循环。该循环由两个较小的循环组成,分别处理 $evalAsync 队列和 $watch 列表。 $digest 循环不断迭代,直到模型稳定,这意味着 $evalAsync 队列为空,并且 $watch 列表没有检测到任何更改。 $watch 列表是一组表达式,自上次迭代以来可能已更改。如果检测到更改,则会调用 $watch 函数,该函数通常会使用新值更新 DOM。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)