Angular系列-变化检测

211 阅读1分钟

面试了许多求职者,很多求职者只知其然,而不知所以然,写此文章为广大前端小伙伴指引迷津。纯干货!纯干货!纯干货!

目录

变化检测

数据何时变化?

所有的异步操作是可能导致数据变化的根源因素。

  • 用户输入操作,比如点击,提交等
  • 请求服务端数据
  • 定时事件,比如setTimeout,setInterval
如何通知变化

Angular接入了ZoneJS,由它监听了Angular所有的异步事件。其实它重写了所有的异步api!ZoneJS会通知Angular可能有数据发生变化,需要检测更新。

ZoneJS简述

答:异步的事件都会触发ngZone中的hook,hook调用onTurnDone,每当onTurnDone触发,都会调用detectChanges方进行变化检测。

怎么执行变化检测?

答:脏检查。脏检查其实就是存储所有变量的值,每当可能有变量发生变化需要检查时,就将所有变量的旧值跟新值进行比较,不相等就说明检测到变化,需要更新对应视图。

小白也是新手面试官,欢迎领导莅临指导工作,提出建议,小白不胜感激,不喜勿喷,点赞收藏随机送程序媛小姐姐一枚哦!!!