AngularJS的$ watch函数是如何工作的?

我现在正在阅读很多有关AngularJS的文章,并且遇到了这个神奇的$ watchfunction。 我知道如何使用它,但我不知道它是如何在后台实现的。 这是一个时间间隔函数吗? 或者是否angular度地称这个手表执行的每一个声明?

我现在不想深入了解源代码,如果你们中的一个人已经知道答案,并希望分享他对这个主题的知识,我会很高兴。

谢谢。

每个摘要循环对所有手表进行评估(有时多次)。 摘要循环是由于某些事件或调用$ apply()而input的。 手表不会周期性地根据计时器进行调用。

请参阅https://docs.angularjs.org/guide/scope#integration-with-the-browser-event-loop

浏览器的事件循环等待事件到达。 事件的callback得到执行…一旦执行callback,浏览器就会离开JavaScript上下文,并根据DOM更改重新呈现视图。 Angular通过提供自己的事件处理循环来修改正常的JavaScriptstream程。 这将JavaScript分解为经典的和有angular度的执行上下文… Angular执行[some] stimulusFn(),它通常会修改应用程序状态。 Angular进入$ digest循环。 循环由两个处理$ evalAsync队列和$ watch列表的小循环组成。 $ digest循环持续迭代,直到模型稳定,这意味着$ evalAsync队列为空,$ watch列表不检测任何更改。 $ watch列表是一组expression式,自从上一次迭代以来可能发生了变化。 如果检测到变化,则调用$ watch函数,通常用新值更新DOM。

在这里输入图像说明