Как Angular.JS работает на самом низком уровне?

Читал статьи, гуглил, но всё равно не совсем понятно как реализовано отслеживание изменений в реальном времени.
Тут например Сделай свой AngularJS автор сам вызывает scope.$digest();
На данный момент моя догадка:
это бесконечный цикл сравнивающий 2 объекта.
Но ведь тогда итерации на разных машинах работают с разной скорость.
И если ng директив много это же очень затратно?
  • Вопрос задан
  • 545 просмотров
Решения вопроса 1
@lega
В статье по сути все правильно, это не бесконечный цикл, да в нем сравниваются старое и текущее значение, в случае отличия вызывается "callbacks".
$digest() вызывается на каждом углу и на каждый чих: после $timout, после $http, после ng-click и пр. поэтому создается иллюзия "отслеживание изменений в реальном времени".

И если ng директив много это же очень затратно?
На современном железе и браузере может происходить более 10M сравнений в секунду, поэтому приложения с небольшим $digest с небольшим кол-м ватчей 1000-20к работает быстро (зависит от ватчей).

Так же сейчас во всех фреймворках идет тенденция в сторону (изолированных) компонентов, поэтому при правильном построении веб приложения (1000 компонент х 1000 ватчей) -> и 1М ватчей будет работать быстро (1мс).
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы